home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Tcl-Tk 8.0 / Pre-installed version / Tcl Shell 8.0 < prev    next >
MacOS Executable  |  1997-08-15  |  34.0 KB  |  [APPL/TclL]

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: MacOS Executable (executable/macOSExecutable).

You can browse this item here: Tcl Shell 8.0

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert MacOS Executable (executable/macOSExecutable) magic Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert MacOS PPC PEF Executable (executable/macPPCPEFExe) magic Unsupported
100% file MacBinary II, inited, Fri Aug 15 07:32:09 1997, modified Fri Aug 15 07:32:09 1997, creator 'TclL', type application, 2128 bytes "Tcl Shell 8.0" default (weak)
99% file header for PowerPC PEF executable, at 0x8d0 32493 bytes resource default
98% file header for PowerPC PEF executable default
97% file data default
74% TrID Macintosh Application (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[APPL]
macFileCreator[TclL]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0d 54 63 6c 20 53 68 | 65 6c 6c 20 38 2e 30 00 |..Tcl Sh|ell 8.0.|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 41 50 50 4c 54 63 6c | 4c 01 00 00 00 00 00 00 |.APPLTcl|L.......|
|00000050| 00 00 00 00 00 08 50 00 | 00 7e ed b0 19 ee b9 b0 |......P.|.~......|
|00000060| 19 ee b9 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 6c 45 00 00 |........|....lE..|
|00000080| 4a 6f 79 21 70 65 66 66 | 70 77 70 63 00 00 00 01 |Joy!peff|pwpc....|
|00000090| b0 19 ee 88 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000a0| 00 03 00 02 00 00 00 00 | ff ff ff ff 00 00 00 00 |........|........|
|000000b0| 00 00 02 68 00 00 02 68 | 00 00 02 68 00 00 01 d0 |...h...h|...h....|
|000000c0| 00 04 04 00 ff ff ff ff | 00 00 00 00 00 00 00 81 |........|........|
|000000d0| 00 00 00 7d 00 00 00 47 | 00 00 04 40 02 01 04 00 |...}...G|...@....|
|000000e0| ff ff ff ff 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000f0| 00 00 01 50 00 00 00 80 | 04 04 04 00 00 00 00 00 |...P....|........|
|00000100| 00 00 00 01 00 00 00 48 | ff ff ff ff 00 00 00 00 |.......H|........|
|00000110| ff ff ff ff 00 00 00 00 | 00 00 00 02 00 00 00 0b |........|........|
|00000120| 00 00 00 01 00 00 00 a0 | 00 00 00 a8 00 00 01 48 |........|.......H|
|00000130| 00 00 00 01 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000140| 00 00 00 00 00 00 00 0a | 00 00 00 00 00 00 00 00 |........|........|
|00000150| 00 00 00 07 00 00 00 00 | 00 00 00 00 00 00 00 01 |........|........|
|00000160| 00 00 00 0a 00 00 00 00 | 02 00 00 14 02 00 00 28 |........|.......(|
|00000170| 02 00 00 3c 02 00 00 4b | 01 00 00 50 02 00 00 5e |...<...K|...P...^|
|00000180| 02 00 00 67 02 00 00 72 | 02 00 00 80 02 00 00 89 |...g...r|........|
|00000190| 02 00 00 92 00 01 00 00 | 00 00 00 03 00 00 00 00 |........|........|
|000001a0| 4a 0a 42 04 46 01 00 00 | 74 63 6c 38 2e 30 00 49 |J.B.F...|tcl8.0.I|
|000001b0| 6e 74 65 72 66 61 63 65 | 4c 69 62 00 53 49 4f 55 |nterface|Lib.SIOU|
|000001c0| 58 48 61 6e 64 6c 65 4f | 6e 65 45 76 65 6e 74 00 |XHandleO|neEvent.|
|000001d0| 54 63 6c 5f 4d 61 63 53 | 65 74 45 76 65 6e 74 50 |Tcl_MacS|etEventP|
|000001e0| 72 6f 63 00 49 6e 73 74 | 61 6c 6c 43 6f 6e 73 6f |roc.Inst|allConso|
|000001f0| 6c 65 00 65 78 69 74 00 | 53 49 4f 55 58 53 65 74 |le.exit.|SIOUXSet|
|00000200| 74 69 6e 67 73 00 54 63 | 6c 5f 45 78 69 74 00 54 |tings.Tc|l_Exit.T|
|00000210| 63 6c 5f 53 65 74 56 61 | 72 00 53 49 4f 55 58 53 |cl_SetVa|r.SIOUXS|
|00000220| 65 74 54 69 74 6c 65 00 | 54 63 6c 5f 49 6e 69 74 |etTitle.|Tcl_Init|
|00000230| 00 54 63 6c 5f 4d 61 69 | 6e 00 4d 61 78 41 70 70 |.Tcl_Mai|n.MaxApp|
|00000240| 6c 5a 6f 6e 65 00 00 00 | 00 00 00 00 00 00 00 00 |lZone...|........|
|00000250| 7c 08 02 a6 90 01 00 08 | 94 21 ff c0 48 00 00 ad ||.......|.!..H...|
|00000260| 2c 03 00 00 41 82 00 10 | 38 60 00 01 48 00 01 c9 |,...A...|8`..H...|
|00000270| 80 41 00 14 38 02 00 50 | 80 a2 00 2c 90 01 00 38 |.A..8..P|...,...8|
|00000280| 38 00 00 00 38 60 00 01 | 90 01 00 3c 38 81 00 38 |8...8`..|...<8..8|
|00000290| 48 00 01 ed 80 41 00 14 | 80 01 00 48 38 21 00 40 |H....A..|...H8!.@|
|000002a0| 7c 08 03 a6 4e 80 00 20 | 7c 08 02 a6 93 e1 ff fc ||...N.. ||.......|
|000002b0| 90 01 00 08 94 21 ff c0 | 7c 7f 1b 78 7f e3 fb 78 |.....!..||..x...x|
|000002c0| 48 00 01 8d 80 41 00 14 | 2c 03 00 01 40 82 00 0c |H....A..|,...@...|
|000002d0| 38 60 00 01 48 00 00 20 | 38 82 00 56 38 a2 00 65 |8`..H.. |8..V8..e|
|000002e0| 7f e3 fb 78 38 c0 00 01 | 48 00 01 7d 80 41 00 14 |...x8...|H..}.A..|
|000002f0| 38 60 00 00 80 01 00 48 | 38 21 00 40 7c 08 03 a6 |8`.....H|8!.@|...|
|00000300| 83 e1 ff fc 4e 80 00 20 | 7c 08 02 a6 93 e1 ff fc |....N.. ||.......|
|00000310| 93 c1 ff f8 90 01 00 08 | 94 21 ff c0 83 c2 00 10 |........|.!......|
|00000320| 48 00 00 b5 80 41 00 14 | 38 00 00 01 98 1e 00 03 |H....A..|8.......|
|00000330| 3b e0 00 00 98 1e 00 05 | 7f e3 fb 78 9b fe 00 04 |;.......|...x....|
|00000340| 48 00 00 ad 80 41 00 14 | 38 62 00 6d 48 00 00 b9 |H....A..|8b.mH...|
|00000350| 80 41 00 14 80 62 00 00 | 48 00 00 c5 80 41 00 14 |.A...b..|H....A..|
|00000360| 7f e3 fb 78 80 01 00 48 | 38 21 00 40 7c 08 03 a6 |...x...H|8!.@|...|
|00000370| 83 e1 ff fc 83 c1 ff f8 | 4e 80 00 20 38 60 00 00 |........|N.. 8`..|
|00000380| 90 61 00 00 4e 80 00 20 | 7c 08 02 a6 93 e1 ff fc |.a..N.. ||.......|
|00000390| 90 01 00 08 94 21 ff b0 | 3b e0 00 00 93 e1 00 38 |.....!..|;......8|
|000003a0| 4b ff ff dd 7f e3 fb 78 | 38 81 00 38 4b ff fe a5 |K......x|8..8K...|
|000003b0| 60 00 00 00 7f e3 fb 78 | 48 00 00 dd 80 41 00 14 |`......x|H....A..|
|000003c0| 80 01 00 58 38 21 00 50 | 7c 08 03 a6 83 e1 ff fc |...X8!.P||.......|
|000003d0| 4e 80 00 20 81 82 00 28 | 90 41 00 14 80 0c 00 00 |N.. ...(|.A......|
|000003e0| 80 4c 00 04 7c 09 03 a6 | 4e 80 04 20 81 82 00 08 |.L..|...|N.. ....|
|000003f0| 90 41 00 14 80 0c 00 00 | 80 4c 00 04 7c 09 03 a6 |.A......|.L..|...|
|00000400| 4e 80 04 20 81 82 00 1c | 90 41 00 14 80 0c 00 00 |N.. ....|.A......|
|00000410| 80 4c 00 04 7c 09 03 a6 | 4e 80 04 20 81 82 00 04 |.L..|...|N.. ....|
|00000420| 90 41 00 14 80 0c 00 00 | 80 4c 00 04 7c 09 03 a6 |.A......|.L..|...|
|00000430| 4e 80 04 20 81 82 00 14 | 90 41 00 14 80 0c 00 00 |N.. ....|.A......|
|00000440| 80 4c 00 04 7c 09 03 a6 | 4e 80 04 20 81 82 00 20 |.L..|...|N.. ... |
|00000450| 90 41 00 14 80 0c 00 00 | 80 4c 00 04 7c 09 03 a6 |.A......|.L..|...|
|00000460| 4e 80 04 20 81 82 00 18 | 90 41 00 14 80 0c 00 00 |N.. ....|.A......|
|00000470| 80 4c 00 04 7c 09 03 a6 | 4e 80 04 20 81 82 00 24 |.L..|...|N.. ...$|
|00000480| 90 41 00 14 80 0c 00 00 | 80 4c 00 04 7c 09 03 a6 |.A......|.L..|...|
|00000490| 4e 80 04 20 81 82 00 0c | 90 41 00 14 80 0c 00 00 |N.. ....|.A......|
|000004a0| 80 4c 00 04 7c 09 03 a6 | 4e 80 04 20 00 00 01 38 |.L..|...|N.. ...8|
|000004b0| 80 00 00 4c 08 00 00 00 | 00 00 00 00 00 00 00 00 |...L....|........|
|000004c0| 00 2f 21 40 82 02 05 00 | 6d 00 65 00 56 00 50 00 |./!@....|m.e.V.P.|
|000004d0| 58 04 22 01 38 04 25 74 | 63 6c 73 68 01 2e 74 63 |X.".8.%t|clsh..tc|
|000004e0| 6c 5f 72 63 52 73 72 63 | 4e 61 6d 65 01 27 74 63 |l_rcRsrc|Name.'tc|
|000004f0| 6c 73 68 72 63 01 30 0f | 54 63 6c 20 49 6e 74 65 |lshrc.0.|Tcl Inte|
|00000500| 72 70 72 65 74 65 72 00 | 00 00 00 00 00 00 00 00 |rpreter.|........|
|00000510| 4a 6f 79 21 70 65 66 66 | 6d 36 38 6b 00 00 00 01 |Joy!peff|m68k....|
|00000520| b0 19 ee 7d 00 00 00 00 | 00 00 00 00 00 00 00 00 |...}....|........|
|00000530| 00 03 00 02 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000540| 00 00 01 32 00 00 01 32 | 00 00 01 32 00 00 00 a0 |...2...2|...2....|
|00000550| 00 01 02 00 00 00 00 0c | 00 00 00 00 00 00 00 d8 |........|........|
|00000560| 00 00 00 d8 00 00 00 67 | 00 00 01 d4 02 01 02 00 |.......g|........|
|00000570| 00 00 00 15 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000580| 00 00 01 84 00 00 02 3c | 04 01 02 00 43 6f 64 65 |.......<|....Code|
|00000590| 53 65 63 74 69 6f 6e 00 | 25 41 35 57 6f 72 6c 64 |Section.|%A5World|
|000005a0| 00 4c 6f 61 64 65 72 53 | 65 63 74 69 6f 6e 00 00 |.LoaderS|ection..|
|000005b0| 2a 51 4e 56 ff f0 2f 0d | 22 6d ff e8 20 59 4e 90 |*QNV../.|"m.. YN.|
|000005c0| 2a 6e ff ec 4a 80 67 10 | 48 78 00 01 22 6d ff d4 |*n..J.g.|Hx.."m..|
|000005d0| 20 59 4e 90 2a 6e ff ec | 70 01 2d 40 00 08 2d 6d | YN.*n..|p.-@..-m|
|000005e0| ff fc ff f0 42 ae ff f4 | 2f 2d ff f0 48 6e ff f0 |....B...|/-..Hn..|
|000005f0| 2f 2e 00 08 22 6d ff e4 | 20 59 4e 90 2a 6e ff ec |/..."m..| YN.*n..|
|00000600| 4e 5e 4e 74 00 08 2a 51 | 4e 56 ff f8 2f 0d 2f 2e |N^Nt..*Q|NV.././.|
|00000610| 00 08 22 6d ff e0 20 59 | 4e 90 2a 6e ff f4 53 80 |.."m.. Y|N.*n..S.|
|00000620| 66 04 70 01 60 1e 48 78 | 00 01 2f 2d ff f4 2f 2d |f.p.`.Hx|../-../-|
|00000630| ff f8 2f 2e 00 08 22 6d | ff d8 20 59 4e 90 2a 6e |../..."m|.. YN.*n|
|00000640| ff f4 70 00 4e 5e 4e 74 | 00 04 2a 51 4e 56 ff f8 |..p.N^Nt|..*QNV..|
|00000650| 2f 0d 22 6d ff c0 20 59 | 4e 90 2a 6e ff f4 20 6d |/."m.. Y|N.*n.. m|
|00000660| ff d0 11 7c 00 01 00 03 | 20 6d ff d0 11 7c 00 01 |...|....| m...|..|
|00000670| 00 05 20 6d ff d0 42 28 | 00 04 70 00 2f 00 22 6d |.. m..B(|..p./."m|
|00000680| ff cc 20 59 4e 90 2a 6e | ff f4 2f 2d ff ec 22 6d |.. YN.*n|../-.."m|
|00000690| ff dc 20 59 4e 90 2a 6e | ff f4 2f 2d ff c4 22 6d |.. YN.*n|../-.."m|
|000006a0| ff c8 20 59 4e 90 2a 6e | ff f4 70 00 4e 5e 4e 75 |.. YN.*n|..p.N^Nu|
|000006b0| 2a 51 70 00 4e 74 00 04 | 2a 51 4e 56 ff f4 2f 0d |*Qp.Nt..|*QNV../.|
|000006c0| 42 ae ff f4 48 6e ff f4 | 42 a7 61 ff ff ff fe e6 |B...Hn..|B.a.....|
|000006d0| 42 a7 22 6d ff bc 20 59 | 4e 90 2a 6e ff f0 4e 5e |B."m.. Y|N.*n..N^|
|000006e0| 4e 75 74 49 06 25 74 63 | 6c 73 68 01 2e 74 63 6c |NutI.%tc|lsh..tcl|
|000006f0| 5f 72 63 52 73 72 63 4e | 61 6d 65 02 27 74 63 6c |_rcRsrcN|ame.'tcl|
|00000700| 73 68 72 63 01 30 0f 54 | 63 6c 20 49 6e 74 65 72 |shrc.0.T|cl Inter|
|00000710| 70 72 65 74 65 72 00 2f | 21 c0 82 02 05 00 24 00 |preter./|!.....$.|
|00000720| c8 00 1c 00 0c 00 06 00 | 20 22 3f 3c 01 23 06 a9 |........| "?<.#..|
|00000730| f0 02 22 ff fd 0e 22 01 | 08 82 02 07 00 78 01 00 |.."...".|.....x..|
|00000740| 00 78 00 9a 00 78 00 56 | 00 78 06 65 00 00 00 01 |.x...x.V|.x.e....|
|00000750| 00 00 00 b0 00 00 00 01 | 00 00 00 b8 ff ff ff ff |........|........|
|00000760| 00 00 00 00 00 00 00 03 | 00 00 00 0b 00 00 00 01 |........|........|
|00000770| 00 00 00 b8 00 00 00 c4 | 00 00 01 7c 00 00 00 01 |........|...|....|
|00000780| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000790| 00 00 00 01 00 00 00 00 | 00 00 00 00 00 00 00 1c |........|........|
|000007a0| 00 00 00 00 00 00 00 00 | 00 00 00 01 00 00 00 01 |........|........|
|000007b0| 00 00 00 00 00 00 00 35 | 00 00 00 00 00 00 00 00 |.......5|........|
|000007c0| 00 00 00 09 00 00 00 02 | 00 00 00 00 02 00 00 17 |........|........|
|000007d0| 02 00 00 29 02 00 00 3c | 02 00 00 50 02 00 00 64 |...)...<|...P...d|
|000007e0| 01 00 00 73 02 00 00 81 | 02 00 00 8a 02 00 00 95 |...s....|........|
|000007f0| 02 00 00 a3 02 00 00 ac | 00 01 00 00 00 00 00 05 |........|........|
|00000800| 00 00 00 00 80 33 4a 0a | 42 05 80 37 46 03 00 00 |.....3J.|B..7F...|
|00000810| 4d 53 4c 20 4d 57 52 75 | 6e 74 69 6d 65 4c 69 62 |MSL MWRu|ntimeLib|
|00000820| 43 46 4d 36 38 4b 00 65 | 78 69 74 00 49 6e 74 65 |CFM68K.e|xit.Inte|
|00000830| 72 66 61 63 65 4c 69 62 | 00 4d 61 78 41 70 70 6c |rfaceLib|.MaxAppl|
|00000840| 5a 6f 6e 65 00 74 63 6c | 38 2e 30 00 53 49 4f 55 |Zone.tcl|8.0.SIOU|
|00000850| 58 48 61 6e 64 6c 65 4f | 6e 65 45 76 65 6e 74 00 |XHandleO|neEvent.|
|00000860| 54 63 6c 5f 4d 61 63 53 | 65 74 45 76 65 6e 74 50 |Tcl_MacS|etEventP|
|00000870| 72 6f 63 00 49 6e 73 74 | 61 6c 6c 43 6f 6e 73 6f |roc.Inst|allConso|
|00000880| 6c 65 00 53 49 4f 55 58 | 53 65 74 74 69 6e 67 73 |le.SIOUX|Settings|
|00000890| 00 54 63 6c 5f 45 78 69 | 74 00 54 63 6c 5f 53 65 |.Tcl_Exi|t.Tcl_Se|
|000008a0| 74 56 61 72 00 53 49 4f | 55 58 53 65 74 54 69 74 |tVar.SIO|UXSetTit|
|000008b0| 6c 65 00 54 63 6c 5f 49 | 6e 69 74 00 54 63 6c 5f |le.Tcl_I|nit.Tcl_|
|000008c0| 4d 61 69 6e 00 00 00 00 | 00 00 00 00 00 00 00 00 |Main....|........|
|000008d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000900| 00 00 01 00 00 00 7d d0 | 00 00 7c d0 00 00 01 1d |......}.|..|.....|
|00000910| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000920| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000930| 0d 54 63 6c 20 53 68 65 | 6c 6c 20 38 2e 30 02 00 |.Tcl She|ll 8.0..|
|00000940| 00 00 50 61 72 74 53 49 | 54 21 00 00 00 00 00 00 |..PartSI|T!......|
|00000950| 00 00 50 61 72 74 53 49 | 54 21 00 00 00 00 00 00 |..PartSI|T!......|
|00000960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000970| 00 00 b0 1d b6 36 00 00 | 00 00 00 00 7e ed 00 00 |.....6..|....~...|
|00000980| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000009a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000009b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000009c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000009d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000009e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000009f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000a00| 00 00 00 31 08 00 80 00 | 00 00 03 38 2e 30 26 38 |...1....|...8.0&8|
|00000a10| 2e 30 2c 20 62 79 20 52 | 61 79 20 4a 6f 68 6e 73 |.0, by R|ay Johns|
|00000a20| 6f 6e 20 a9 20 53 75 6e | 20 4d 69 63 72 6f 73 79 |on . Sun| Microsy|
|00000a30| 73 74 65 6d 73 00 00 00 | 26 08 00 80 00 00 00 03 |stems...|&.......|
|00000a40| 38 2e 30 1b 53 69 6d 70 | 6c 65 20 54 63 6c 20 53 |8.0.Simp|le Tcl S|
|00000a50| 68 65 6c 6c 20 38 2e 30 | 20 a9 20 31 39 39 36 00 |hell 8.0| . 1996.|
|00000a60| 00 51 88 23 20 69 6e 69 | 74 2e 74 63 6c 20 2d 2d |.Q.# ini|t.tcl --|
|00000a70| 0d 23 0d 23 20 44 65 66 | 61 75 6c 74 20 73 79 73 |.#.# Def|ault sys|
|00000a80| 74 65 6d 20 73 74 61 72 | 74 75 70 20 66 69 6c 65 |tem star|tup file|
|00000a90| 20 66 6f 72 20 54 63 6c | 2d 62 61 73 65 64 20 61 | for Tcl|-based a|
|00000aa0| 70 70 6c 69 63 61 74 69 | 6f 6e 73 2e 20 20 44 65 |pplicati|ons. De|
|00000ab0| 66 69 6e 65 73 0d 23 20 | 22 75 6e 6b 6e 6f 77 6e |fines.# |"unknown|
|00000ac0| 22 20 70 72 6f 63 65 64 | 75 72 65 20 61 6e 64 20 |" proced|ure and |
|00000ad0| 61 75 74 6f 2d 6c 6f 61 | 64 20 66 61 63 69 6c 69 |auto-loa|d facili|
|00000ae0| 74 69 65 73 2e 0d 23 0d | 23 20 53 43 43 53 3a 20 |ties..#.|# SCCS: |
|00000af0| 40 28 23 29 20 69 6e 69 | 74 2e 74 63 6c 20 31 2e |@(#) ini|t.tcl 1.|
|00000b00| 38 36 20 39 37 2f 30 38 | 2f 30 38 20 31 30 3a 33 |86 97/08|/08 10:3|
|00000b10| 37 3a 33 39 0d 23 0d 23 | 20 43 6f 70 79 72 69 67 |7:39.#.#| Copyrig|
|00000b20| 68 74 20 28 63 29 20 31 | 39 39 31 2d 31 39 39 33 |ht (c) 1|991-1993|
|00000b30| 20 54 68 65 20 52 65 67 | 65 6e 74 73 20 6f 66 20 | The Reg|ents of |
|00000b40| 74 68 65 20 55 6e 69 76 | 65 72 73 69 74 79 20 6f |the Univ|ersity o|
|00000b50| 66 20 43 61 6c 69 66 6f | 72 6e 69 61 2e 0d 23 20 |f Califo|rnia..# |
|00000b60| 43 6f 70 79 72 69 67 68 | 74 20 28 63 29 20 31 39 |Copyrigh|t (c) 19|
|00000b70| 39 34 2d 31 39 39 36 20 | 53 75 6e 20 4d 69 63 72 |94-1996 |Sun Micr|
|00000b80| 6f 73 79 73 74 65 6d 73 | 2c 20 49 6e 63 2e 0d 23 |osystems|, Inc..#|
|00000b90| 0d 23 20 53 65 65 20 74 | 68 65 20 66 69 6c 65 20 |.# See t|he file |
|00000ba0| 22 6c 69 63 65 6e 73 65 | 2e 74 65 72 6d 73 22 20 |"license|.terms" |
|00000bb0| 66 6f 72 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |for info|rmation |
|00000bc0| 6f 6e 20 75 73 61 67 65 | 20 61 6e 64 20 72 65 64 |on usage| and red|
|00000bd0| 69 73 74 72 69 62 75 74 | 69 6f 6e 0d 23 20 6f 66 |istribut|ion.# of|
|00000be0| 20 74 68 69 73 20 66 69 | 6c 65 2c 20 61 6e 64 20 | this fi|le, and |
|00000bf0| 66 6f 72 20 61 20 44 49 | 53 43 4c 41 49 4d 45 52 |for a DI|SCLAIMER|
|00000c00| 20 4f 46 20 41 4c 4c 20 | 57 41 52 52 41 4e 54 49 | OF ALL |WARRANTI|
|00000c10| 45 53 2e 0d 23 0d 0d 69 | 66 20 7b 5b 69 6e 66 6f |ES..#..i|f {[info|
|00000c20| 20 63 6f 6d 6d 61 6e 64 | 73 20 70 61 63 6b 61 67 | command|s packag|
|00000c30| 65 5d 20 3d 3d 20 22 22 | 7d 20 7b 0d 20 20 20 20 |e] == ""|} {. |
|00000c40| 65 72 72 6f 72 20 22 76 | 65 72 73 69 6f 6e 20 6d |error "v|ersion m|
|00000c50| 69 73 6d 61 74 63 68 3a | 20 6c 69 62 72 61 72 79 |ismatch:| library|
|00000c60| 5c 6e 73 63 72 69 70 74 | 73 20 65 78 70 65 63 74 |\nscript|s expect|
|00000c70| 20 54 63 6c 20 76 65 72 | 73 69 6f 6e 20 37 2e 35 | Tcl ver|sion 7.5|
|00000c80| 62 31 20 6f 72 20 6c 61 | 74 65 72 20 62 75 74 20 |b1 or la|ter but |
|00000c90| 74 68 65 20 6c 6f 61 64 | 65 64 20 76 65 72 73 69 |the load|ed versi|
|00000ca0| 6f 6e 20 69 73 5c 6e 6f | 6e 6c 79 20 5b 69 6e 66 |on is\no|nly [inf|
|00000cb0| 6f 20 70 61 74 63 68 6c | 65 76 65 6c 5d 22 0d 7d |o patchl|evel]".}|
|00000cc0| 0d 70 61 63 6b 61 67 65 | 20 72 65 71 75 69 72 65 |.package| require|
|00000cd0| 20 2d 65 78 61 63 74 20 | 54 63 6c 20 38 2e 30 0d | -exact |Tcl 8.0.|
|00000ce0| 0d 23 20 43 6f 6d 70 75 | 74 65 20 74 68 65 20 61 |.# Compu|te the a|
|00000cf0| 75 74 6f 20 70 61 74 68 | 20 74 6f 20 75 73 65 20 |uto path| to use |
|00000d00| 69 6e 20 74 68 69 73 20 | 69 6e 74 65 72 70 72 65 |in this |interpre|
|00000d10| 74 65 72 2e 0d 23 20 28 | 61 75 74 6f 5f 70 61 74 |ter..# (|auto_pat|
|00000d20| 68 20 63 6f 75 6c 64 20 | 62 65 20 61 6c 72 65 61 |h could |be alrea|
|00000d30| 64 79 20 73 65 74 2c 20 | 69 6e 20 73 61 66 65 20 |dy set, |in safe |
|00000d40| 69 6e 74 65 72 70 73 20 | 66 6f 72 20 69 6e 73 74 |interps |for inst|
|00000d50| 61 6e 63 65 29 0d 69 66 | 20 7b 21 5b 69 6e 66 6f |ance).if| {![info|
|00000d60| 20 65 78 69 73 74 73 20 | 61 75 74 6f 5f 70 61 74 | exists |auto_pat|
|00000d70| 68 5d 7d 20 7b 0d 20 20 | 20 20 69 66 20 5b 63 61 |h]} {. | if [ca|
|00000d80| 74 63 68 20 7b 73 65 74 | 20 61 75 74 6f 5f 70 61 |tch {set| auto_pa|
|00000d90| 74 68 20 24 65 6e 76 28 | 54 43 4c 4c 49 42 50 41 |th $env(|TCLLIBPA|
|00000da0| 54 48 29 7d 5d 20 7b 0d | 09 73 65 74 20 61 75 74 |TH)}] {.|.set aut|
|00000db0| 6f 5f 70 61 74 68 20 22 | 22 0d 20 20 20 20 7d 0d |o_path "|". }.|
|00000dc0| 7d 0d 69 66 20 7b 5b 6c | 73 65 61 72 63 68 20 2d |}.if {[l|search -|
|00000dd0| 65 78 61 63 74 20 24 61 | 75 74 6f 5f 70 61 74 68 |exact $a|uto_path|
|00000de0| 20 5b 69 6e 66 6f 20 6c | 69 62 72 61 72 79 5d 5d | [info l|ibrary]]|
|00000df0| 20 3c 20 30 7d 20 7b 0d | 20 20 20 20 6c 61 70 70 | < 0} {.| lapp|
|00000e00| 65 6e 64 20 61 75 74 6f | 5f 70 61 74 68 20 5b 69 |end auto|_path [i|
|00000e10| 6e 66 6f 20 6c 69 62 72 | 61 72 79 5d 0d 7d 0d 63 |nfo libr|ary].}.c|
|00000e20| 61 74 63 68 20 7b 0d 20 | 20 20 20 66 6f 72 65 61 |atch {. | forea|
|00000e30| 63 68 20 64 69 72 20 24 | 74 63 6c 5f 70 6b 67 50 |ch dir $|tcl_pkgP|
|00000e40| 61 74 68 20 7b 0d 09 69 | 66 20 7b 5b 6c 73 65 61 |ath {..i|f {[lsea|
|00000e50| 72 63 68 20 2d 65 78 61 | 63 74 20 24 61 75 74 6f |rch -exa|ct $auto|
|00000e60| 5f 70 61 74 68 20 24 64 | 69 72 5d 20 3c 20 30 7d |_path $d|ir] < 0}|
|00000e70| 20 7b 0d 09 20 20 20 20 | 6c 61 70 70 65 6e 64 20 | {.. |lappend |
|00000e80| 61 75 74 6f 5f 70 61 74 | 68 20 24 64 69 72 0d 09 |auto_pat|h $dir..|
|00000e90| 7d 0d 20 20 20 20 7d 0d | 20 20 20 20 75 6e 73 65 |}. }.| unse|
|00000ea0| 74 20 64 69 72 0d 7d 0d | 0d 23 20 43 6f 6e 64 69 |t dir.}.|.# Condi|
|00000eb0| 74 69 6f 6e 61 6c 69 7a | 65 20 66 6f 72 20 70 72 |tionaliz|e for pr|
|00000ec0| 65 73 65 6e 63 65 20 6f | 66 20 65 78 65 63 2e 0d |esence o|f exec..|
|00000ed0| 0d 70 61 63 6b 61 67 65 | 20 75 6e 6b 6e 6f 77 6e |.package| unknown|
|00000ee0| 20 74 63 6c 50 6b 67 55 | 6e 6b 6e 6f 77 6e 0d 69 | tclPkgU|nknown.i|
|00000ef0| 66 20 7b 5b 69 6e 66 6f | 20 63 6f 6d 6d 61 6e 64 |f {[info| command|
|00000f00| 73 20 65 78 65 63 5d 20 | 3d 3d 20 22 22 7d 20 7b |s exec] |== ""} {|
|00000f10| 0d 0d 20 20 20 20 23 20 | 53 6f 6d 65 20 6d 61 63 |.. # |Some mac|
|00000f20| 68 69 6e 65 73 2c 20 73 | 75 63 68 20 61 73 20 74 |hines, s|uch as t|
|00000f30| 68 65 20 4d 61 63 69 6e | 74 6f 73 68 2c 20 64 6f |he Macin|tosh, do|
|00000f40| 20 6e 6f 74 20 68 61 76 | 65 20 65 78 65 63 2e 20 | not hav|e exec. |
|00000f50| 41 6c 73 6f 2c 20 6f 6e | 20 61 6c 6c 0d 20 20 20 |Also, on| all. |
|00000f60| 20 23 20 70 6c 61 74 66 | 6f 72 6d 73 2c 20 73 61 | # platf|orms, sa|
|00000f70| 66 65 20 69 6e 74 65 72 | 70 72 65 74 65 72 73 20 |fe inter|preters |
|00000f80| 64 6f 20 6e 6f 74 20 68 | 61 76 65 20 65 78 65 63 |do not h|ave exec|
|00000f90| 2e 0d 0d 20 20 20 20 73 | 65 74 20 61 75 74 6f 5f |... s|et auto_|
|00000fa0| 6e 6f 65 78 65 63 20 31 | 0d 7d 0d 73 65 74 20 65 |noexec 1|.}.set e|
|00000fb0| 72 72 6f 72 43 6f 64 65 | 20 22 22 0d 73 65 74 20 |rrorCode| "".set |
|00000fc0| 65 72 72 6f 72 49 6e 66 | 6f 20 22 22 0d 0d 23 20 |errorInf|o ""..# |
|00000fd0| 44 65 66 69 6e 65 20 61 | 20 6c 6f 67 20 63 6f 6d |Define a| log com|
|00000fe0| 6d 61 6e 64 20 28 77 68 | 69 63 68 20 63 61 6e 20 |mand (wh|ich can |
|00000ff0| 62 65 20 6f 76 65 72 77 | 69 74 74 65 6e 20 74 6f |be overw|itten to|
|00001000| 20 6c 6f 67 20 65 72 72 | 6f 72 73 0d 23 20 64 69 | log err|ors.# di|
|00001010| 66 66 65 72 65 6e 74 6c | 79 2c 20 73 70 65 63 69 |fferentl|y, speci|
|00001020| 61 6c 6c 79 20 77 68 65 | 6e 20 73 74 64 65 72 72 |ally whe|n stderr|
|00001030| 20 69 73 20 6e 6f 74 20 | 61 76 61 69 6c 61 62 6c | is not |availabl|
|00001040| 65 29 0d 0d 69 66 20 7b | 5b 69 6e 66 6f 20 63 6f |e)..if {|[info co|
|00001050| 6d 6d 61 6e 64 73 20 74 | 63 6c 4c 6f 67 5d 20 3d |mmands t|clLog] =|
|00001060| 3d 20 22 22 7d 20 7b 0d | 20 20 20 20 70 72 6f 63 |= ""} {.| proc|
|00001070| 20 74 63 6c 4c 6f 67 20 | 7b 73 74 72 69 6e 67 7d | tclLog |{string}|
|00001080| 20 7b 0d 09 63 61 74 63 | 68 20 7b 70 75 74 73 20 | {..catc|h {puts |
|00001090| 73 74 64 65 72 72 20 24 | 73 74 72 69 6e 67 7d 0d |stderr $|string}.|
|000010a0| 20 20 20 20 7d 0d 7d 0d | 0d 23 20 75 6e 6b 6e 6f | }.}.|.# unkno|
|000010b0| 77 6e 20 2d 2d 0d 23 20 | 54 68 69 73 20 70 72 6f |wn --.# |This pro|
|000010c0| 63 65 64 75 72 65 20 69 | 73 20 63 61 6c 6c 65 64 |cedure i|s called|
|000010d0| 20 77 68 65 6e 20 61 20 | 54 63 6c 20 63 6f 6d 6d | when a |Tcl comm|
|000010e0| 61 6e 64 20 69 73 20 69 | 6e 76 6f 6b 65 64 20 74 |and is i|nvoked t|
|000010f0| 68 61 74 20 64 6f 65 73 | 6e 27 74 0d 23 20 65 78 |hat does|n't.# ex|
|00001100| 69 73 74 20 69 6e 20 74 | 68 65 20 69 6e 74 65 72 |ist in t|he inter|
|00001110| 70 72 65 74 65 72 2e 20 | 20 49 74 20 74 61 6b 65 |preter. | It take|
|00001120| 73 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |s the fo|llowing |
|00001130| 73 74 65 70 73 20 74 6f | 20 6d 61 6b 65 20 74 68 |steps to| make th|
|00001140| 65 0d 23 20 63 6f 6d 6d | 61 6e 64 20 61 76 61 69 |e.# comm|and avai|
|00001150| 6c 61 62 6c 65 3a 0d 23 | 0d 23 09 31 2e 20 53 65 |lable:.#|.#.1. Se|
|00001160| 65 20 69 66 20 74 68 65 | 20 61 75 74 6f 6c 6f 61 |e if the| autoloa|
|00001170| 64 20 66 61 63 69 6c 69 | 74 79 20 63 61 6e 20 6c |d facili|ty can l|
|00001180| 6f 63 61 74 65 20 74 68 | 65 20 63 6f 6d 6d 61 6e |ocate th|e comman|
|00001190| 64 20 69 6e 20 61 0d 23 | 09 20 20 20 54 63 6c 20 |d in a.#|. Tcl |
|000011a0| 73 63 72 69 70 74 20 66 | 69 6c 65 2e 20 20 49 66 |script f|ile. If|
|000011b0| 20 73 6f 2c 20 6c 6f 61 | 64 20 69 74 20 61 6e 64 | so, loa|d it and|
|000011c0| 20 65 78 65 63 75 74 65 | 20 69 74 2e 0d 23 09 32 | execute| it..#.2|
|000011d0| 2e 20 49 66 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |. If the| command|
|000011e0| 20 77 61 73 20 69 6e 76 | 6f 6b 65 64 20 69 6e 74 | was inv|oked int|
|000011f0| 65 72 61 63 74 69 76 65 | 6c 79 20 61 74 20 74 6f |eractive|ly at to|
|00001200| 70 2d 6c 65 76 65 6c 3a | 0d 23 09 20 20 20 20 28 |p-level:|.#. (|
|00001210| 61 29 20 73 65 65 20 69 | 66 20 74 68 65 20 63 6f |a) see i|f the co|
|00001220| 6d 6d 61 6e 64 20 65 78 | 69 73 74 73 20 61 73 20 |mmand ex|ists as |
|00001230| 61 6e 20 65 78 65 63 75 | 74 61 62 6c 65 20 55 4e |an execu|table UN|
|00001240| 49 58 20 70 72 6f 67 72 | 61 6d 2e 0d 23 09 09 49 |IX progr|am..#..I|
|00001250| 66 20 73 6f 2c 20 22 65 | 78 65 63 22 20 74 68 65 |f so, "e|xec" the|
|00001260| 20 63 6f 6d 6d 61 6e 64 | 2e 0d 23 09 20 20 20 20 | command|..#. |
|00001270| 28 62 29 20 73 65 65 20 | 69 66 20 74 68 65 20 63 |(b) see |if the c|
|00001280| 6f 6d 6d 61 6e 64 20 72 | 65 71 75 65 73 74 73 20 |ommand r|equests |
|00001290| 63 73 68 2d 6c 69 6b 65 | 20 68 69 73 74 6f 72 79 |csh-like| history|
|000012a0| 20 73 75 62 73 74 69 74 | 75 74 69 6f 6e 0d 23 09 | substit|ution.#.|
|000012b0| 09 69 6e 20 6f 6e 65 20 | 6f 66 20 74 68 65 20 63 |.in one |of the c|
|000012c0| 6f 6d 6d 6f 6e 20 66 6f | 72 6d 73 20 21 21 2c 20 |ommon fo|rms !!, |
|000012d0| 21 3c 6e 75 6d 62 65 72 | 3e 2c 20 6f 72 20 5e 6f |!<number|>, or ^o|
|000012e0| 6c 64 5e 6e 65 77 2e 20 | 20 49 66 0d 23 09 09 73 |ld^new. | If.#..s|
|000012f0| 6f 2c 20 65 6d 75 6c 61 | 74 65 20 63 73 68 27 73 |o, emula|te csh's|
|00001300| 20 68 69 73 74 6f 72 79 | 20 73 75 62 73 74 69 74 | history| substit|
|00001310| 75 74 69 6f 6e 2e 0d 23 | 09 20 20 20 20 28 63 29 |ution..#|. (c)|
|00001320| 20 73 65 65 20 69 66 20 | 74 68 65 20 63 6f 6d 6d | see if |the comm|
|00001330| 61 6e 64 20 69 73 20 61 | 20 75 6e 69 71 75 65 20 |and is a| unique |
|00001340| 61 62 62 72 65 76 69 61 | 74 69 6f 6e 20 66 6f 72 |abbrevia|tion for|
|00001350| 20 61 6e 6f 74 68 65 72 | 0d 23 09 09 63 6f 6d 6d | another|.#..comm|
|00001360| 61 6e 64 2e 20 20 49 66 | 20 73 6f 2c 20 69 6e 76 |and. If| so, inv|
|00001370| 6f 6b 65 20 74 68 65 20 | 63 6f 6d 6d 61 6e 64 2e |oke the |command.|
|00001380| 0d 23 0d 23 20 41 72 67 | 75 6d 65 6e 74 73 3a 0d |.#.# Arg|uments:.|
|00001390| 23 20 61 72 67 73 20 2d | 09 41 20 6c 69 73 74 20 |# args -|.A list |
|000013a0| 77 68 6f 73 65 20 65 6c | 65 6d 65 6e 74 73 20 61 |whose el|ements a|
|000013b0| 72 65 20 74 68 65 20 77 | 6f 72 64 73 20 6f 66 20 |re the w|ords of |
|000013c0| 74 68 65 20 6f 72 69 67 | 69 6e 61 6c 0d 23 09 09 |the orig|inal.#..|
|000013d0| 63 6f 6d 6d 61 6e 64 2c | 20 69 6e 63 6c 75 64 69 |command,| includi|
|000013e0| 6e 67 20 74 68 65 20 63 | 6f 6d 6d 61 6e 64 20 6e |ng the c|ommand n|
|000013f0| 61 6d 65 2e 0d 0d 70 72 | 6f 63 20 75 6e 6b 6e 6f |ame...pr|oc unkno|
|00001400| 77 6e 20 61 72 67 73 20 | 7b 0d 20 20 20 20 67 6c |wn args |{. gl|
|00001410| 6f 62 61 6c 20 61 75 74 | 6f 5f 6e 6f 65 78 65 63 |obal aut|o_noexec|
|00001420| 20 61 75 74 6f 5f 6e 6f | 6c 6f 61 64 20 65 6e 76 | auto_no|load env|
|00001430| 20 75 6e 6b 6e 6f 77 6e | 5f 70 65 6e 64 69 6e 67 | unknown|_pending|
|00001440| 20 74 63 6c 5f 69 6e 74 | 65 72 61 63 74 69 76 65 | tcl_int|eractive|
|00001450| 0d 20 20 20 20 67 6c 6f | 62 61 6c 20 65 72 72 6f |. glo|bal erro|
|00001460| 72 43 6f 64 65 20 65 72 | 72 6f 72 49 6e 66 6f 0d |rCode er|rorInfo.|
|00001470| 0d 20 20 20 20 23 20 53 | 61 76 65 20 74 68 65 20 |. # S|ave the |
|00001480| 76 61 6c 75 65 73 20 6f | 66 20 65 72 72 6f 72 43 |values o|f errorC|
|00001490| 6f 64 65 20 61 6e 64 20 | 65 72 72 6f 72 49 6e 66 |ode and |errorInf|
|000014a0| 6f 20 76 61 72 69 61 62 | 6c 65 73 2c 20 73 69 6e |o variab|les, sin|
|000014b0| 63 65 20 74 68 65 79 0d | 20 20 20 20 23 20 6d 61 |ce they.| # ma|
|000014c0| 79 20 67 65 74 20 6d 6f | 64 69 66 69 65 64 20 69 |y get mo|dified i|
|000014d0| 66 20 63 61 75 67 68 74 | 20 65 72 72 6f 72 73 20 |f caught| errors |
|000014e0| 6f 63 63 75 72 20 62 65 | 6c 6f 77 2e 20 20 54 68 |occur be|low. Th|
|000014f0| 65 20 76 61 72 69 61 62 | 6c 65 73 20 77 69 6c 6c |e variab|les will|
|00001500| 0d 20 20 20 20 23 20 62 | 65 20 72 65 73 74 6f 72 |. # b|e restor|
|00001510| 65 64 20 6a 75 73 74 20 | 62 65 66 6f 72 65 20 72 |ed just |before r|
|00001520| 65 2d 65 78 65 63 75 74 | 69 6e 67 20 74 68 65 20 |e-execut|ing the |
|00001530| 6d 69 73 73 69 6e 67 20 | 63 6f 6d 6d 61 6e 64 2e |missing |command.|
|00001540| 0d 0d 20 20 20 20 73 65 | 74 20 73 61 76 65 64 45 |.. se|t savedE|
|00001550| 72 72 6f 72 43 6f 64 65 | 20 24 65 72 72 6f 72 43 |rrorCode| $errorC|
|00001560| 6f 64 65 0d 20 20 20 20 | 73 65 74 20 73 61 76 65 |ode. |set save|
|00001570| 64 45 72 72 6f 72 49 6e | 66 6f 20 24 65 72 72 6f |dErrorIn|fo $erro|
|00001580| 72 49 6e 66 6f 0d 20 20 | 20 20 73 65 74 20 6e 61 |rInfo. | set na|
|00001590| 6d 65 20 5b 6c 69 6e 64 | 65 78 20 24 61 72 67 73 |me [lind|ex $args|
|000015a0| 20 30 5d 0d 20 20 20 20 | 69 66 20 21 5b 69 6e 66 | 0]. |if ![inf|
|000015b0| 6f 20 65 78 69 73 74 73 | 20 61 75 74 6f 5f 6e 6f |o exists| auto_no|
|000015c0| 6c 6f 61 64 5d 20 7b 0d | 09 23 0d 09 23 20 4d 61 |load] {.|.#..# Ma|
|000015d0| 6b 65 20 73 75 72 65 20 | 77 65 27 72 65 20 6e 6f |ke sure |we're no|
|000015e0| 74 20 74 72 79 69 6e 67 | 20 74 6f 20 6c 6f 61 64 |t trying| to load|
|000015f0| 20 74 68 65 20 73 61 6d | 65 20 70 72 6f 63 20 74 | the sam|e proc t|
|00001600| 77 69 63 65 2e 0d 09 23 | 0d 09 69 66 20 5b 69 6e |wice...#|..if [in|
|00001610| 66 6f 20 65 78 69 73 74 | 73 20 75 6e 6b 6e 6f 77 |fo exist|s unknow|
|00001620| 6e 5f 70 65 6e 64 69 6e | 67 28 24 6e 61 6d 65 29 |n_pendin|g($name)|
|00001630| 5d 20 7b 0d 09 20 20 20 | 20 72 65 74 75 72 6e 20 |] {.. | return |
|00001640| 2d 63 6f 64 65 20 65 72 | 72 6f 72 20 22 73 65 6c |-code er|ror "sel|
|00001650| 66 2d 72 65 66 65 72 65 | 6e 74 69 61 6c 20 72 65 |f-refere|ntial re|
|00001660| 63 75 72 73 69 6f 6e 20 | 69 6e 20 5c 22 75 6e 6b |cursion |in \"unk|
|00001670| 6e 6f 77 6e 5c 22 20 66 | 6f 72 20 63 6f 6d 6d 61 |nown\" f|or comma|
|00001680| 6e 64 20 5c 22 24 6e 61 | 6d 65 5c 22 22 3b 0d 09 |nd \"$na|me\"";..|
|00001690| 7d 0d 09 73 65 74 20 75 | 6e 6b 6e 6f 77 6e 5f 70 |}..set u|nknown_p|
|000016a0| 65 6e 64 69 6e 67 28 24 | 6e 61 6d 65 29 20 70 65 |ending($|name) pe|
|000016b0| 6e 64 69 6e 67 3b 0d 09 | 73 65 74 20 72 65 74 20 |nding;..|set ret |
|000016c0| 5b 63 61 74 63 68 20 7b | 61 75 74 6f 5f 6c 6f 61 |[catch {|auto_loa|
|000016d0| 64 20 24 6e 61 6d 65 7d | 20 6d 73 67 5d 0d 09 75 |d $name}| msg]..u|
|000016e0| 6e 73 65 74 20 75 6e 6b | 6e 6f 77 6e 5f 70 65 6e |nset unk|nown_pen|
|000016f0| 64 69 6e 67 28 24 6e 61 | 6d 65 29 3b 0d 09 69 66 |ding($na|me);..if|
|00001700| 20 7b 24 72 65 74 20 21 | 3d 20 30 7d 20 7b 0d 09 | {$ret !|= 0} {..|
|00001710| 20 20 20 20 72 65 74 75 | 72 6e 20 2d 63 6f 64 65 | retu|rn -code|
|00001720| 20 24 72 65 74 20 2d 65 | 72 72 6f 72 63 6f 64 65 | $ret -e|rrorcode|
|00001730| 20 24 65 72 72 6f 72 43 | 6f 64 65 20 5c 0d 09 09 | $errorC|ode \...|
|00001740| 22 65 72 72 6f 72 20 77 | 68 69 6c 65 20 61 75 74 |"error w|hile aut|
|00001750| 6f 6c 6f 61 64 69 6e 67 | 20 5c 22 24 6e 61 6d 65 |oloading| \"$name|
|00001760| 5c 22 3a 20 24 6d 73 67 | 22 0d 09 7d 0d 09 69 66 |\": $msg|"..}..if|
|00001770| 20 21 5b 61 72 72 61 79 | 20 73 69 7a 65 20 75 6e | ![array| size un|
|00001780| 6b 6e 6f 77 6e 5f 70 65 | 6e 64 69 6e 67 5d 20 7b |known_pe|nding] {|
|00001790| 0d 09 20 20 20 20 75 6e | 73 65 74 20 75 6e 6b 6e |.. un|set unkn|
|000017a0| 6f 77 6e 5f 70 65 6e 64 | 69 6e 67 0d 09 7d 0d 09 |own_pend|ing..}..|
|000017b0| 69 66 20 24 6d 73 67 20 | 7b 0d 09 20 20 20 20 73 |if $msg |{.. s|
|000017c0| 65 74 20 65 72 72 6f 72 | 43 6f 64 65 20 24 73 61 |et error|Code $sa|
|000017d0| 76 65 64 45 72 72 6f 72 | 43 6f 64 65 0d 09 20 20 |vedError|Code.. |
|000017e0| 20 20 73 65 74 20 65 72 | 72 6f 72 49 6e 66 6f 20 | set er|rorInfo |
|000017f0| 24 73 61 76 65 64 45 72 | 72 6f 72 49 6e 66 6f 0d |$savedEr|rorInfo.|
|00001800| 09 20 20 20 20 73 65 74 | 20 63 6f 64 65 20 5b 63 |. set| code [c|
|00001810| 61 74 63 68 20 7b 75 70 | 6c 65 76 65 6c 20 31 20 |atch {up|level 1 |
|00001820| 24 61 72 67 73 7d 20 6d | 73 67 5d 0d 09 20 20 20 |$args} m|sg].. |
|00001830| 20 69 66 20 7b 24 63 6f | 64 65 20 3d 3d 20 20 31 | if {$co|de == 1|
|00001840| 7d 20 7b 0d 09 09 23 0d | 09 09 23 20 53 74 72 69 |} {...#.|..# Stri|
|00001850| 70 20 74 68 65 20 6c 61 | 73 74 20 66 69 76 65 20 |p the la|st five |
|00001860| 6c 69 6e 65 73 20 6f 66 | 66 20 74 68 65 20 65 72 |lines of|f the er|
|00001870| 72 6f 72 20 73 74 61 63 | 6b 20 28 74 68 65 79 27 |ror stac|k (they'|
|00001880| 72 65 0d 09 09 23 20 66 | 72 6f 6d 20 74 68 65 20 |re...# f|rom the |
|00001890| 22 75 70 6c 65 76 65 6c | 22 20 63 6f 6d 6d 61 6e |"uplevel|" comman|
|000018a0| 64 29 2e 0d 09 09 23 0d | 0d 09 09 73 65 74 20 6e |d)....#.|...set n|
|000018b0| 65 77 20 5b 73 70 6c 69 | 74 20 24 65 72 72 6f 72 |ew [spli|t $error|
|000018c0| 49 6e 66 6f 20 5c 6e 5d | 0d 09 09 73 65 74 20 6e |Info \n]|...set n|
|000018d0| 65 77 20 5b 6a 6f 69 6e | 20 5b 6c 72 61 6e 67 65 |ew [join| [lrange|
|000018e0| 20 24 6e 65 77 20 30 20 | 5b 65 78 70 72 20 5b 6c | $new 0 |[expr [l|
|000018f0| 6c 65 6e 67 74 68 20 24 | 6e 65 77 5d 20 2d 20 36 |length $|new] - 6|
|00001900| 5d 5d 20 5c 6e 5d 0d 09 | 09 72 65 74 75 72 6e 20 |]] \n]..|.return |
|00001910| 2d 63 6f 64 65 20 65 72 | 72 6f 72 20 2d 65 72 72 |-code er|ror -err|
|00001920| 6f 72 63 6f 64 65 20 24 | 65 72 72 6f 72 43 6f 64 |orcode $|errorCod|
|00001930| 65 20 5c 0d 09 09 09 2d | 65 72 72 6f 72 69 6e 66 |e \....-|errorinf|
|00001940| 6f 20 24 6e 65 77 20 24 | 6d 73 67 0d 09 20 20 20 |o $new $|msg.. |
|00001950| 20 7d 20 65 6c 73 65 20 | 7b 0d 09 09 72 65 74 75 | } else |{...retu|
|00001960| 72 6e 20 2d 63 6f 64 65 | 20 24 63 6f 64 65 20 24 |rn -code| $code $|
|00001970| 6d 73 67 0d 09 20 20 20 | 20 7d 0d 09 7d 0d 20 20 |msg.. | }..}. |
|00001980| 20 20 7d 0d 20 20 20 20 | 69 66 20 7b 28 5b 69 6e | }. |if {([in|
|00001990| 66 6f 20 6c 65 76 65 6c | 5d 20 3d 3d 20 31 29 20 |fo level|] == 1) |
|000019a0| 26 26 20 28 5b 69 6e 66 | 6f 20 73 63 72 69 70 74 |&& ([inf|o script|
|000019b0| 5d 20 3d 3d 20 22 22 29 | 20 5c 0d 09 20 20 20 20 |] == "")| \.. |
|000019c0| 26 26 20 5b 69 6e 66 6f | 20 65 78 69 73 74 73 20 |&& [info| exists |
|000019d0| 74 63 6c 5f 69 6e 74 65 | 72 61 63 74 69 76 65 5d |tcl_inte|ractive]|
|000019e0| 20 26 26 20 24 74 63 6c | 5f 69 6e 74 65 72 61 63 | && $tcl|_interac|
|000019f0| 74 69 76 65 7d 20 7b 0d | 09 69 66 20 21 5b 69 6e |tive} {.|.if ![in|
|00001a00| 66 6f 20 65 78 69 73 74 | 73 20 61 75 74 6f 5f 6e |fo exist|s auto_n|
|00001a10| 6f 65 78 65 63 5d 20 7b | 0d 09 20 20 20 20 73 65 |oexec] {|.. se|
|00001a20| 74 20 6e 65 77 20 5b 61 | 75 74 6f 5f 65 78 65 63 |t new [a|uto_exec|
|00001a30| 6f 6b 20 24 6e 61 6d 65 | 5d 0d 09 20 20 20 20 69 |ok $name|].. i|
|00001a40| 66 20 7b 24 6e 65 77 20 | 21 3d 20 22 22 7d 20 7b |f {$new |!= ""} {|
|00001a50| 0d 09 09 73 65 74 20 65 | 72 72 6f 72 43 6f 64 65 |...set e|rrorCode|
|00001a60| 20 24 73 61 76 65 64 45 | 72 72 6f 72 43 6f 64 65 | $savedE|rrorCode|
|00001a70| 0d 09 09 73 65 74 20 65 | 72 72 6f 72 49 6e 66 6f |...set e|rrorInfo|
|00001a80| 20 24 73 61 76 65 64 45 | 72 72 6f 72 49 6e 66 6f | $savedE|rrorInfo|
|00001a90| 0d 09 09 73 65 74 20 72 | 65 64 69 72 20 22 22 0d |...set r|edir "".|
|00001aa0| 09 09 69 66 20 7b 5b 69 | 6e 66 6f 20 63 6f 6d 6d |..if {[i|nfo comm|
|00001ab0| 61 6e 64 73 20 63 6f 6e | 73 6f 6c 65 5d 20 3d 3d |ands con|sole] ==|
|00001ac0| 20 22 22 7d 20 7b 0d 09 | 09 20 20 20 20 73 65 74 | ""} {..|. set|
|00001ad0| 20 72 65 64 69 72 20 22 | 3e 26 40 73 74 64 6f 75 | redir "|>&@stdou|
|00001ae0| 74 20 3c 40 73 74 64 69 | 6e 22 0d 09 09 7d 0d 09 |t <@stdi|n"...}..|
|00001af0| 09 72 65 74 75 72 6e 20 | 5b 75 70 6c 65 76 65 6c |.return |[uplevel|
|00001b00| 20 65 78 65 63 20 24 72 | 65 64 69 72 20 24 6e 65 | exec $r|edir $ne|
|00001b10| 77 20 5b 6c 72 61 6e 67 | 65 20 24 61 72 67 73 20 |w [lrang|e $args |
|00001b20| 31 20 65 6e 64 5d 5d 0d | 09 20 20 20 20 7d 0d 09 |1 end]].|. }..|
|00001b30| 7d 0d 09 73 65 74 20 65 | 72 72 6f 72 43 6f 64 65 |}..set e|rrorCode|
|00001b40| 20 24 73 61 76 65 64 45 | 72 72 6f 72 43 6f 64 65 | $savedE|rrorCode|
|00001b50| 0d 09 73 65 74 20 65 72 | 72 6f 72 49 6e 66 6f 20 |..set er|rorInfo |
|00001b60| 24 73 61 76 65 64 45 72 | 72 6f 72 49 6e 66 6f 0d |$savedEr|rorInfo.|
|00001b70| 09 69 66 20 7b 24 6e 61 | 6d 65 20 3d 3d 20 22 21 |.if {$na|me == "!|
|00001b80| 21 22 7d 20 7b 0d 09 20 | 20 20 20 73 65 74 20 6e |!"} {.. | set n|
|00001b90| 65 77 63 6d 64 20 5b 68 | 69 73 74 6f 72 79 20 65 |ewcmd [h|istory e|
|00001ba0| 76 65 6e 74 5d 0d 09 7d | 20 65 6c 73 65 69 66 20 |vent]..}| elseif |
|00001bb0| 7b 5b 72 65 67 65 78 70 | 20 7b 5e 21 28 2e 2b 29 |{[regexp| {^!(.+)|
|00001bc0| 24 7d 20 24 6e 61 6d 65 | 20 64 75 6d 6d 79 20 65 |$} $name| dummy e|
|00001bd0| 76 65 6e 74 5d 7d 20 7b | 0d 09 20 20 20 20 73 65 |vent]} {|.. se|
|00001be0| 74 20 6e 65 77 63 6d 64 | 20 5b 68 69 73 74 6f 72 |t newcmd| [histor|
|00001bf0| 79 20 65 76 65 6e 74 20 | 24 65 76 65 6e 74 5d 0d |y event |$event].|
|00001c00| 09 7d 20 65 6c 73 65 69 | 66 20 7b 5b 72 65 67 65 |.} elsei|f {[rege|
|00001c10| 78 70 20 7b 5e 5c 5e 28 | 5b 5e 5e 5d 2a 29 5c 5e |xp {^\^(|[^^]*)\^|
|00001c20| 28 5b 5e 5e 5d 2a 29 5c | 5e 3f 24 7d 20 24 6e 61 |([^^]*)\|^?$} $na|
|00001c30| 6d 65 20 64 75 6d 6d 79 | 20 6f 6c 64 20 6e 65 77 |me dummy| old new|
|00001c40| 5d 7d 20 7b 0d 09 20 20 | 20 20 73 65 74 20 6e 65 |]} {.. | set ne|
|00001c50| 77 63 6d 64 20 5b 68 69 | 73 74 6f 72 79 20 65 76 |wcmd [hi|story ev|
|00001c60| 65 6e 74 20 2d 31 5d 0d | 09 20 20 20 20 63 61 74 |ent -1].|. cat|
|00001c70| 63 68 20 7b 72 65 67 73 | 75 62 20 2d 61 6c 6c 20 |ch {regs|ub -all |
|00001c80| 2d 2d 20 24 6f 6c 64 20 | 24 6e 65 77 63 6d 64 20 |-- $old |$newcmd |
|00001c90| 24 6e 65 77 20 6e 65 77 | 63 6d 64 7d 0d 09 7d 0d |$new new|cmd}..}.|
|00001ca0| 09 69 66 20 5b 69 6e 66 | 6f 20 65 78 69 73 74 73 |.if [inf|o exists|
|00001cb0| 20 6e 65 77 63 6d 64 5d | 20 7b 0d 09 20 20 20 20 | newcmd]| {.. |
|00001cc0| 74 63 6c 4c 6f 67 20 24 | 6e 65 77 63 6d 64 0d 09 |tclLog $|newcmd..|
|00001cd0| 20 20 20 20 68 69 73 74 | 6f 72 79 20 63 68 61 6e | hist|ory chan|
|00001ce0| 67 65 20 24 6e 65 77 63 | 6d 64 20 30 0d 09 20 20 |ge $newc|md 0.. |
|00001cf0| 20 20 72 65 74 75 72 6e | 20 5b 75 70 6c 65 76 65 | return| [upleve|
|00001d00| 6c 20 24 6e 65 77 63 6d | 64 5d 0d 09 7d 0d 0d 09 |l $newcm|d]..}...|
|00001d10| 73 65 74 20 72 65 74 20 | 5b 63 61 74 63 68 20 7b |set ret |[catch {|
|00001d20| 73 65 74 20 63 6d 64 73 | 20 5b 69 6e 66 6f 20 63 |set cmds| [info c|
|00001d30| 6f 6d 6d 61 6e 64 73 20 | 24 6e 61 6d 65 2a 5d 7d |ommands |$name*]}|
|00001d40| 20 6d 73 67 5d 0d 09 69 | 66 20 7b 5b 73 74 72 69 | msg]..i|f {[stri|
|00001d50| 6e 67 20 63 6f 6d 70 61 | 72 65 20 24 6e 61 6d 65 |ng compa|re $name|
|00001d60| 20 22 3a 3a 22 5d 20 3d | 3d 20 30 7d 20 7b 0d 09 | "::"] =|= 0} {..|
|00001d70| 20 20 20 20 73 65 74 20 | 6e 61 6d 65 20 22 22 0d | set |name "".|
|00001d80| 09 7d 0d 09 69 66 20 7b | 24 72 65 74 20 21 3d 20 |.}..if {|$ret != |
|00001d90| 30 7d 20 7b 0d 09 20 20 | 20 20 72 65 74 75 72 6e |0} {.. | return|
|00001da0| 20 2d 63 6f 64 65 20 24 | 72 65 74 20 2d 65 72 72 | -code $|ret -err|
|00001db0| 6f 72 63 6f 64 65 20 24 | 65 72 72 6f 72 43 6f 64 |orcode $|errorCod|
|00001dc0| 65 20 5c 0d 09 09 22 65 | 72 72 6f 72 20 69 6e 20 |e \..."e|rror in |
|00001dd0| 75 6e 6b 6e 6f 77 6e 20 | 77 68 69 6c 65 20 63 68 |unknown |while ch|
|00001de0| 65 63 6b 69 6e 67 20 69 | 66 20 5c 22 24 6e 61 6d |ecking i|f \"$nam|
|00001df0| 65 5c 22 20 69 73 20 61 | 20 75 6e 69 71 75 65 20 |e\" is a| unique |
|00001e00| 63 6f 6d 6d 61 6e 64 20 | 61 62 62 72 65 76 69 61 |command |abbrevia|
|00001e10| 74 69 6f 6e 3a 20 24 6d | 73 67 22 0d 09 7d 0d 09 |tion: $m|sg"..}..|
|00001e20| 69 66 20 7b 5b 6c 6c 65 | 6e 67 74 68 20 24 63 6d |if {[lle|ngth $cm|
|00001e30| 64 73 5d 20 3d 3d 20 31 | 7d 20 7b 0d 09 20 20 20 |ds] == 1|} {.. |
|00001e40| 20 72 65 74 75 72 6e 20 | 5b 75 70 6c 65 76 65 6c | return |[uplevel|
|00001e50| 20 5b 6c 72 65 70 6c 61 | 63 65 20 24 61 72 67 73 | [lrepla|ce $args|
|00001e60| 20 30 20 30 20 24 63 6d | 64 73 5d 5d 0d 09 7d 0d | 0 0 $cm|ds]]..}.|
|00001e70| 09 69 66 20 7b 5b 6c 6c | 65 6e 67 74 68 20 24 63 |.if {[ll|ength $c|
|00001e80| 6d 64 73 5d 20 21 3d 20 | 30 7d 20 7b 0d 09 20 20 |mds] != |0} {.. |
|00001e90| 20 20 69 66 20 7b 24 6e | 61 6d 65 20 3d 3d 20 22 | if {$n|ame == "|
|00001ea0| 22 7d 20 7b 0d 09 09 72 | 65 74 75 72 6e 20 2d 63 |"} {...r|eturn -c|
|00001eb0| 6f 64 65 20 65 72 72 6f | 72 20 22 65 6d 70 74 79 |ode erro|r "empty|
|00001ec0| 20 63 6f 6d 6d 61 6e 64 | 20 6e 61 6d 65 20 5c 22 | command| name \"|
|00001ed0| 5c 22 22 0d 09 20 20 20 | 20 7d 20 65 6c 73 65 20 |\"".. | } else |
|00001ee0| 7b 0d 09 09 72 65 74 75 | 72 6e 20 2d 63 6f 64 65 |{...retu|rn -code|
|00001ef0| 20 65 72 72 6f 72 20 5c | 0d 09 09 09 22 61 6d 62 | error \|...."amb|
|00001f00| 69 67 75 6f 75 73 20 63 | 6f 6d 6d 61 6e 64 20 6e |iguous c|ommand n|
|00001f10| 61 6d 65 20 5c 22 24 6e | 61 6d 65 5c 22 3a 20 5b |ame \"$n|ame\": [|
|00001f20| 6c 73 6f 72 74 20 24 63 | 6d 64 73 5d 22 0d 09 20 |lsort $c|mds]".. |
|00001f30| 20 20 20 7d 0d 09 7d 0d | 20 20 20 20 7d 0d 20 20 | }..}.| }. |
|00001f40| 20 20 72 65 74 75 72 6e | 20 2d 63 6f 64 65 20 65 | return| -code e|
|00001f50| 72 72 6f 72 20 22 69 6e | 76 61 6c 69 64 20 63 6f |rror "in|valid co|
|00001f60| 6d 6d 61 6e 64 20 6e 61 | 6d 65 20 5c 22 24 6e 61 |mmand na|me \"$na|
|00001f70| 6d 65 5c 22 22 0d 7d 0d | 0d 23 20 61 75 74 6f 5f |me\"".}.|.# auto_|
|00001f80| 6c 6f 61 64 20 2d 2d 0d | 23 20 43 68 65 63 6b 73 |load --.|# Checks|
|00001f90| 20 61 20 63 6f 6c 6c 65 | 63 74 69 6f 6e 20 6f 66 | a colle|ction of|
|00001fa0| 20 6c 69 62 72 61 72 79 | 20 64 69 72 65 63 74 6f | library| directo|
|00001fb0| 72 69 65 73 20 74 6f 20 | 73 65 65 20 69 66 20 61 |ries to |see if a|
|00001fc0| 20 70 72 6f 63 65 64 75 | 72 65 0d 23 20 69 73 20 | procedu|re.# is |
|00001fd0| 64 65 66 69 6e 65 64 20 | 69 6e 20 6f 6e 65 20 6f |defined |in one o|
|00001fe0| 66 20 74 68 65 6d 2e 20 | 20 49 66 20 73 6f 2c 20 |f them. | If so, |
|00001ff0| 69 74 20 73 6f 75 72 63 | 65 73 20 74 68 65 20 61 |it sourc|es the a|
|00002000| 70 70 72 6f 70 72 69 61 | 74 65 0d 23 20 6c 69 62 |ppropria|te.# lib|
|00002010| 72 61 72 79 20 66 69 6c | 65 20 74 6f 20 63 72 65 |rary fil|e to cre|
|00002020| 61 74 65 20 74 68 65 20 | 70 72 6f 63 65 64 75 72 |ate the |procedur|
|00002030| 65 2e 20 20 52 65 74 75 | 72 6e 73 20 31 20 69 66 |e. Retu|rns 1 if|
|00002040| 20 69 74 20 73 75 63 63 | 65 73 73 66 75 6c 6c 79 | it succ|essfully|
|00002050| 0d 23 20 6c 6f 61 64 65 | 64 20 74 68 65 20 70 72 |.# loade|d the pr|
|00002060| 6f 63 65 64 75 72 65 2c | 20 30 20 6f 74 68 65 72 |ocedure,| 0 other|
|00002070| 77 69 73 65 2e 0d 23 0d | 23 20 41 72 67 75 6d 65 |wise..#.|# Argume|
|00002080| 6e 74 73 3a 20 0d 23 20 | 63 6d 64 20 2d 09 09 09 |nts: .# |cmd -...|
|00002090| 4e 61 6d 65 20 6f 66 20 | 74 68 65 20 63 6f 6d 6d |Name of |the comm|
|000020a0| 61 6e 64 20 74 6f 20 66 | 69 6e 64 20 61 6e 64 20 |and to f|ind and |
|000020b0| 6c 6f 61 64 2e 0d 0d 70 | 72 6f 63 20 61 75 74 6f |load...p|roc auto|
|000020c0| 5f 6c 6f 61 64 20 63 6d | 64 20 7b 0d 20 20 20 20 |_load cm|d {. |
|000020d0| 67 6c 6f 62 61 6c 20 61 | 75 74 6f 5f 69 6e 64 65 |global a|uto_inde|
|000020e0| 78 20 61 75 74 6f 5f 6f | 6c 64 70 61 74 68 20 61 |x auto_o|ldpath a|
|000020f0| 75 74 6f 5f 70 61 74 68 | 20 65 6e 76 20 65 72 72 |uto_path| env err|
|00002100| 6f 72 49 6e 66 6f 20 65 | 72 72 6f 72 43 6f 64 65 |orInfo e|rrorCode|
|00002110| 0d 0d 20 20 20 20 66 6f | 72 65 61 63 68 20 6e 61 |.. fo|reach na|
|00002120| 6d 65 20 5b 6c 69 73 74 | 20 24 63 6d 64 20 3a 3a |me [list| $cmd ::|
|00002130| 24 63 6d 64 5d 20 7b 0d | 09 69 66 20 5b 69 6e 66 |$cmd] {.|.if [inf|
|00002140| 6f 20 65 78 69 73 74 73 | 20 61 75 74 6f 5f 69 6e |o exists| auto_in|
|00002150| 64 65 78 28 24 6e 61 6d | 65 29 5d 20 7b 0d 09 20 |dex($nam|e)] {.. |
|00002160| 20 20 20 75 70 6c 65 76 | 65 6c 20 23 30 20 24 61 | uplev|el #0 $a|
|00002170| 75 74 6f 5f 69 6e 64 65 | 78 28 24 6e 61 6d 65 29 |uto_inde|x($name)|
|00002180| 0d 09 20 20 20 20 72 65 | 74 75 72 6e 20 5b 65 78 |.. re|turn [ex|
|00002190| 70 72 20 7b 5b 69 6e 66 | 6f 20 63 6f 6d 6d 61 6e |pr {[inf|o comman|
|000021a0| 64 73 20 24 6e 61 6d 65 | 5d 20 21 3d 20 22 22 7d |ds $name|] != ""}|
|000021b0| 5d 0d 09 7d 0d 20 20 20 | 20 7d 0d 20 20 20 20 69 |]..}. | }. i|
|000021c0| 66 20 21 5b 69 6e 66 6f | 20 65 78 69 73 74 73 20 |f ![info| exists |
|000021d0| 61 75 74 6f 5f 70 61 74 | 68 5d 20 7b 0d 09 72 65 |auto_pat|h] {..re|
|000021e0| 74 75 72 6e 20 30 0d 20 | 20 20 20 7d 0d 20 20 20 |turn 0. | }. |
|000021f0| 20 69 66 20 5b 69 6e 66 | 6f 20 65 78 69 73 74 73 | if [inf|o exists|
|00002200| 20 61 75 74 6f 5f 6f 6c | 64 70 61 74 68 5d 20 7b | auto_ol|dpath] {|
|00002210| 0d 09 69 66 20 7b 24 61 | 75 74 6f 5f 6f 6c 64 70 |..if {$a|uto_oldp|
|00002220| 61 74 68 20 3d 3d 20 24 | 61 75 74 6f 5f 70 61 74 |ath == $|auto_pat|
|00002230| 68 7d 20 7b 0d 09 20 20 | 20 20 72 65 74 75 72 6e |h} {.. | return|
|00002240| 20 30 0d 09 7d 0d 20 20 | 20 20 7d 0d 20 20 20 20 | 0..}. | }. |
|00002250| 73 65 74 20 61 75 74 6f | 5f 6f 6c 64 70 61 74 68 |set auto|_oldpath|
|00002260| 20 24 61 75 74 6f 5f 70 | 61 74 68 0d 0d 20 20 20 | $auto_p|ath.. |
|00002270| 20 23 20 43 68 65 63 6b | 20 69 66 20 77 65 20 61 | # Check| if we a|
|00002280| 72 65 20 61 20 73 61 66 | 65 20 69 6e 74 65 72 70 |re a saf|e interp|
|00002290| 72 65 74 65 72 2e 20 49 | 6e 20 74 68 61 74 20 63 |reter. I|n that c|
|000022a0| 61 73 65 2c 20 77 65 20 | 73 75 70 70 6f 72 74 20 |ase, we |support |
|000022b0| 6f 6e 6c 79 0d 20 20 20 | 20 23 20 6e 65 77 65 72 |only. | # newer|
|000022c0| 20 66 6f 72 6d 61 74 20 | 74 63 6c 49 6e 64 65 78 | format |tclIndex|
|000022d0| 20 66 69 6c 65 73 2e 0d | 0d 20 20 20 20 73 65 74 | files..|. set|
|000022e0| 20 69 73 73 61 66 65 20 | 5b 69 6e 74 65 72 70 20 | issafe |[interp |
|000022f0| 69 73 73 61 66 65 5d 0d | 20 20 20 20 66 6f 72 20 |issafe].| for |
|00002300| 7b 73 65 74 20 69 20 5b | 65 78 70 72 20 5b 6c 6c |{set i [|expr [ll|
|00002310| 65 6e 67 74 68 20 24 61 | 75 74 6f 5f 70 61 74 68 |ength $a|uto_path|
|00002320| 5d 20 2d 20 31 5d 7d 20 | 7b 24 69 20 3e 3d 20 30 |] - 1]} |{$i >= 0|
|00002330| 7d 20 7b 69 6e 63 72 20 | 69 20 2d 31 7d 20 7b 0d |} {incr |i -1} {.|
|00002340| 09 73 65 74 20 64 69 72 | 20 5b 6c 69 6e 64 65 78 |.set dir| [lindex|
|00002350| 20 24 61 75 74 6f 5f 70 | 61 74 68 20 24 69 5d 0d | $auto_p|ath $i].|
|00002360| 09 73 65 74 20 66 20 22 | 22 0d 09 69 66 20 7b 24 |.set f "|"..if {$|
|00002370| 69 73 73 61 66 65 7d 20 | 7b 0d 09 20 20 20 20 63 |issafe} |{.. c|
|00002380| 61 74 63 68 20 7b 73 6f | 75 72 63 65 20 5b 66 69 |atch {so|urce [fi|
|00002390| 6c 65 20 6a 6f 69 6e 20 | 24 64 69 72 20 74 63 6c |le join |$dir tcl|
|000023a0| 49 6e 64 65 78 5d 7d 0d | 09 7d 20 65 6c 73 65 69 |Index]}.|.} elsei|
|000023b0| 66 20 5b 63 61 74 63 68 | 20 7b 73 65 74 20 66 20 |f [catch| {set f |
|000023c0| 5b 6f 70 65 6e 20 5b 66 | 69 6c 65 20 6a 6f 69 6e |[open [f|ile join|
|000023d0| 20 24 64 69 72 20 74 63 | 6c 49 6e 64 65 78 5d 5d | $dir tc|lIndex]]|
|000023e0| 7d 5d 20 7b 0d 09 20 20 | 20 20 63 6f 6e 74 69 6e |}] {.. | contin|
|000023f0| 75 65 0d 09 7d 20 65 6c | 73 65 20 7b 0d 09 20 20 |ue..} el|se {.. |
|00002400| 20 20 73 65 74 20 65 72 | 72 6f 72 20 5b 63 61 74 | set er|ror [cat|
|00002410| 63 68 20 7b 0d 09 09 73 | 65 74 20 69 64 20 5b 67 |ch {...s|et id [g|
|00002420| 65 74 73 20 24 66 5d 0d | 09 09 69 66 20 7b 24 69 |ets $f].|..if {$i|
|00002430| 64 20 3d 3d 20 22 23 20 | 54 63 6c 20 61 75 74 6f |d == "# |Tcl auto|
|00002440| 6c 6f 61 64 20 69 6e 64 | 65 78 20 66 69 6c 65 2c |load ind|ex file,|
|00002450| 20 76 65 72 73 69 6f 6e | 20 32 2e 30 22 7d 20 7b | version| 2.0"} {|
|00002460| 0d 09 09 20 20 20 20 65 | 76 61 6c 20 5b 72 65 61 |... e|val [rea|
|00002470| 64 20 24 66 5d 0d 09 09 | 7d 20 65 6c 73 65 69 66 |d $f]...|} elseif|
|00002480| 20 7b 24 69 64 20 3d 3d | 20 5c 0d 09 09 20 20 20 | {$id ==| \... |
|00002490| 20 22 23 20 54 63 6c 20 | 61 75 74 6f 6c 6f 61 64 | "# Tcl |autoload|
|000024a0| 20 69 6e 64 65 78 20 66 | 69 6c 65 3a 20 65 61 63 | index f|ile: eac|
|000024b0| 68 20 6c 69 6e 65 20 69 | 64 65 6e 74 69 66 69 65 |h line i|dentifie|
|000024c0| 73 20 61 20 54 63 6c 22 | 7d 20 7b 0d 09 09 20 20 |s a Tcl"|} {... |
|000024d0| 20 20 77 68 69 6c 65 20 | 7b 5b 67 65 74 73 20 24 | while |{[gets $|
|000024e0| 66 20 6c 69 6e 65 5d 20 | 3e 3d 20 30 7d 20 7b 0d |f line] |>= 0} {.|
|000024f0| 09 09 09 69 66 20 7b 28 | 5b 73 74 72 69 6e 67 20 |...if {(|[string |
|00002500| 69 6e 64 65 78 20 24 6c | 69 6e 65 20 30 5d 20 3d |index $l|ine 0] =|
|00002510| 3d 20 22 23 22 29 0d 09 | 09 09 09 7c 7c 20 28 5b |= "#")..|...|| ([|
|00002520| 6c 6c 65 6e 67 74 68 20 | 24 6c 69 6e 65 5d 20 21 |llength |$line] !|
|00002530| 3d 20 32 29 7d 20 7b 0d | 09 09 09 20 20 20 20 63 |= 2)} {.|... c|
|00002540| 6f 6e 74 69 6e 75 65 0d | 09 09 09 7d 0d 09 09 09 |ontinue.|...}....|
|00002550| 73 65 74 20 6e 61 6d 65 | 20 5b 6c 69 6e 64 65 78 |set name| [lindex|
|00002560| 20 24 6c 69 6e 65 20 30 | 5d 0d 09 09 09 73 65 74 | $line 0|]....set|
|00002570| 20 61 75 74 6f 5f 69 6e | 64 65 78 28 24 6e 61 6d | auto_in|dex($nam|
|00002580| 65 29 20 5c 0d 09 09 09 | 20 20 20 20 22 73 6f 75 |e) \....| "sou|
|00002590| 72 63 65 20 5b 66 69 6c | 65 20 6a 6f 69 6e 20 24 |rce [fil|e join $|
|000025a0| 64 69 72 20 5b 6c 69 6e | 64 65 78 20 24 6c 69 6e |dir [lin|dex $lin|
|000025b0| 65 20 31 5d 5d 22 0d 09 | 09 20 20 20 20 7d 0d 09 |e 1]]"..|. }..|
|000025c0| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 20 20 20 20 |.} else |{... |
|000025d0| 65 72 72 6f 72 20 5c 0d | 09 09 20 20 20 20 20 20 |error \.|.. |
|000025e0| 22 5b 66 69 6c 65 20 6a | 6f 69 6e 20 24 64 69 72 |"[file j|oin $dir|
|000025f0| 20 74 63 6c 49 6e 64 65 | 78 5d 20 69 73 6e 27 74 | tclInde|x] isn't|
|00002600| 20 61 20 70 72 6f 70 65 | 72 20 54 63 6c 20 69 6e | a prope|r Tcl in|
|00002610| 64 65 78 20 66 69 6c 65 | 22 0d 09 09 7d 0d 09 20 |dex file|"...}.. |
|00002620| 20 20 20 7d 20 6d 73 67 | 5d 0d 09 20 20 20 20 69 | } msg|].. i|
|00002630| 66 20 7b 24 66 20 21 3d | 20 22 22 7d 20 7b 0d 09 |f {$f !=| ""} {..|
|00002640| 09 63 6c 6f 73 65 20 24 | 66 0d 09 20 20 20 20 7d |.close $|f.. }|
|00002650| 0d 09 20 20 20 20 69 66 | 20 24 65 72 72 6f 72 20 |.. if| $error |
|00002660| 7b 0d 09 09 65 72 72 6f | 72 20 24 6d 73 67 20 24 |{...erro|r $msg $|
|00002670| 65 72 72 6f 72 49 6e 66 | 6f 20 24 65 72 72 6f 72 |errorInf|o $error|
|00002680| 43 6f 64 65 0d 09 20 20 | 20 20 7d 0d 09 7d 0d 20 |Code.. | }..}. |
|00002690| 20 20 20 7d 0d 20 20 20 | 20 69 66 20 5b 69 6e 66 | }. | if [inf|
|000026a0| 6f 20 65 78 69 73 74 73 | 20 61 75 74 6f 5f 69 6e |o exists| auto_in|
|000026b0| 64 65 78 28 24 63 6d 64 | 29 5d 20 7b 0d 09 75 70 |dex($cmd|)] {..up|
|000026c0| 6c 65 76 65 6c 20 23 30 | 20 24 61 75 74 6f 5f 69 |level #0| $auto_i|
|000026d0| 6e 64 65 78 28 24 63 6d | 64 29 0d 09 69 66 20 7b |ndex($cm|d)..if {|
|000026e0| 5b 69 6e 66 6f 20 63 6f | 6d 6d 61 6e 64 73 20 24 |[info co|mmands $|
|000026f0| 63 6d 64 5d 20 21 3d 20 | 22 22 7d 20 7b 0d 09 20 |cmd] != |""} {.. |
|00002700| 20 20 20 72 65 74 75 72 | 6e 20 31 0d 09 7d 0d 20 | retur|n 1..}. |
|00002710| 20 20 20 7d 0d 20 20 20 | 20 72 65 74 75 72 6e 20 | }. | return |
|00002720| 30 0d 7d 0d 0d 69 66 20 | 7b 5b 73 74 72 69 6e 67 |0.}..if |{[string|
|00002730| 20 63 6f 6d 70 61 72 65 | 20 24 74 63 6c 5f 70 6c | compare| $tcl_pl|
|00002740| 61 74 66 6f 72 6d 28 70 | 6c 61 74 66 6f 72 6d 29 |atform(p|latform)|
|00002750| 20 77 69 6e 64 6f 77 73 | 5d 20 3d 3d 20 30 7d 20 | windows|] == 0} |
|00002760| 7b 0d 0d 23 20 61 75 74 | 6f 5f 65 78 65 63 6f 6b |{..# aut|o_execok|
|00002770| 20 2d 2d 0d 23 0d 23 20 | 52 65 74 75 72 6e 73 20 | --.#.# |Returns |
|00002780| 73 74 72 69 6e 67 20 74 | 68 61 74 20 69 6e 64 69 |string t|hat indi|
|00002790| 63 61 74 65 73 20 6e 61 | 6d 65 20 6f 66 20 70 72 |cates na|me of pr|
|000027a0| 6f 67 72 61 6d 20 74 6f | 20 65 78 65 63 75 74 65 |ogram to| execute|
|000027b0| 20 69 66 20 0d 23 20 6e | 61 6d 65 20 63 6f 72 72 | if .# n|ame corr|
|000027c0| 65 73 70 6f 6e 64 73 20 | 74 6f 20 61 20 73 68 65 |esponds |to a she|
|000027d0| 6c 6c 20 62 75 69 6c 74 | 69 6e 20 6f 72 20 61 6e |ll built|in or an|
|000027e0| 20 65 78 65 63 75 74 61 | 62 6c 65 20 69 6e 20 74 | executa|ble in t|
|000027f0| 68 65 0d 23 20 57 69 6e | 64 6f 77 73 20 73 65 61 |he.# Win|dows sea|
|00002800| 72 63 68 20 70 61 74 68 | 2c 20 6f 72 20 22 22 20 |rch path|, or "" |
|00002810| 6f 74 68 65 72 77 69 73 | 65 2e 20 20 42 75 69 6c |otherwis|e. Buil|
|00002820| 64 73 20 61 6e 20 61 73 | 73 6f 63 69 61 74 69 76 |ds an as|sociativ|
|00002830| 65 20 0d 23 20 61 72 72 | 61 79 20 61 75 74 6f 5f |e .# arr|ay auto_|
|00002840| 65 78 65 63 73 20 74 68 | 61 74 20 63 61 63 68 65 |execs th|at cache|
|00002850| 73 20 69 6e 66 6f 72 6d | 61 74 69 6f 6e 20 61 62 |s inform|ation ab|
|00002860| 6f 75 74 20 70 72 65 76 | 69 6f 75 73 20 63 68 65 |out prev|ious che|
|00002870| 63 6b 73 2c 20 0d 23 20 | 66 6f 72 20 73 70 65 65 |cks, .# |for spee|
|00002880| 64 2e 0d 23 0d 23 20 41 | 72 67 75 6d 65 6e 74 73 |d..#.# A|rguments|
|00002890| 3a 20 0d 23 20 6e 61 6d | 65 20 2d 09 09 09 4e 61 |: .# nam|e -...Na|
|000028a0| 6d 65 20 6f 66 20 61 20 | 63 6f 6d 6d 61 6e 64 2e |me of a |command.|
|000028b0| 0d 0d 23 20 57 69 6e 64 | 6f 77 73 20 76 65 72 73 |..# Wind|ows vers|
|000028c0| 69 6f 6e 2e 0d 23 0d 23 | 20 4e 6f 74 65 20 74 68 |ion..#.#| Note th|
|000028d0| 61 74 20 69 6e 66 6f 20 | 65 78 65 63 75 74 61 62 |at info |executab|
|000028e0| 6c 65 20 64 6f 65 73 6e | 27 74 20 77 6f 72 6b 20 |le doesn|'t work |
|000028f0| 75 6e 64 65 72 20 57 69 | 6e 64 6f 77 73 2c 20 73 |under Wi|ndows, s|
|00002900| 6f 20 77 65 20 68 61 76 | 65 20 74 6f 0d 23 20 6c |o we hav|e to.# l|
|00002910| 6f 6f 6b 20 66 6f 72 20 | 66 69 6c 65 73 20 77 69 |ook for |files wi|
|00002920| 74 68 20 2e 65 78 65 2c | 20 2e 63 6f 6d 2c 20 6f |th .exe,| .com, o|
|00002930| 72 20 2e 62 61 74 20 65 | 78 74 65 6e 73 69 6f 6e |r .bat e|xtension|
|00002940| 73 2e 20 20 41 6c 73 6f | 2c 20 74 68 65 20 70 61 |s. Also|, the pa|
|00002950| 74 68 0d 23 20 6d 61 79 | 20 62 65 20 69 6e 20 74 |th.# may| be in t|
|00002960| 68 65 20 50 61 74 68 20 | 6f 72 20 50 41 54 48 20 |he Path |or PATH |
|00002970| 65 6e 76 69 72 6f 6e 6d | 65 6e 74 20 76 61 72 69 |environm|ent vari|
|00002980| 61 62 6c 65 73 2c 20 61 | 6e 64 20 70 61 74 68 0d |ables, a|nd path.|
|00002990| 23 20 63 6f 6d 70 6f 6e | 65 6e 74 73 20 61 72 65 |# compon|ents are|
|000029a0| 20 73 65 70 61 72 61 74 | 65 64 20 77 69 74 68 20 | separat|ed with |
|000029b0| 73 65 6d 69 63 6f 6c 6f | 6e 73 2c 20 6e 6f 74 20 |semicolo|ns, not |
|000029c0| 63 6f 6c 6f 6e 73 20 61 | 73 20 75 6e 64 65 72 20 |colons a|s under |
|000029d0| 55 6e 69 78 2e 0d 23 0d | 70 72 6f 63 20 61 75 74 |Unix..#.|proc aut|
|000029e0| 6f 5f 65 78 65 63 6f 6b | 20 6e 61 6d 65 20 7b 0d |o_execok| name {.|
|000029f0| 20 20 20 20 67 6c 6f 62 | 61 6c 20 61 75 74 6f 5f | glob|al auto_|
|00002a00| 65 78 65 63 73 20 65 6e | 76 20 74 63 6c 5f 70 6c |execs en|v tcl_pl|
|00002a10| 61 74 66 6f 72 6d 0d 0d | 20 20 20 20 69 66 20 5b |atform..| if [|
|00002a20| 69 6e 66 6f 20 65 78 69 | 73 74 73 20 61 75 74 6f |info exi|sts auto|
|00002a30| 5f 65 78 65 63 73 28 24 | 6e 61 6d 65 29 5d 20 7b |_execs($|name)] {|
|00002a40| 0d 09 72 65 74 75 72 6e | 20 24 61 75 74 6f 5f 65 |..return| $auto_e|
|00002a50| 78 65 63 73 28 24 6e 61 | 6d 65 29 0d 20 20 20 20 |xecs($na|me). |
|00002a60| 7d 0d 20 20 20 20 73 65 | 74 20 61 75 74 6f 5f 65 |}. se|t auto_e|
|00002a70| 78 65 63 73 28 24 6e 61 | 6d 65 29 20 22 22 0d 0d |xecs($na|me) ""..|
|00002a80| 20 20 20 20 69 66 20 7b | 5b 6c 73 65 61 72 63 68 | if {|[lsearch|
|00002a90| 20 2d 65 78 61 63 74 20 | 7b 63 6c 73 20 63 6f 70 | -exact |{cls cop|
|00002aa0| 79 20 64 61 74 65 20 64 | 65 6c 20 65 72 61 73 65 |y date d|el erase|
|00002ab0| 20 64 69 72 20 65 63 68 | 6f 20 6d 6b 64 69 72 20 | dir ech|o mkdir |
|00002ac0| 6d 64 20 72 65 6e 61 6d | 65 20 0d 09 20 20 20 20 |md renam|e .. |
|00002ad0| 72 65 6e 20 72 6d 64 69 | 72 20 72 64 20 74 69 6d |ren rmdi|r rd tim|
|00002ae0| 65 20 74 79 70 65 20 76 | 65 72 20 76 6f 6c 7d 20 |e type v|er vol} |
|00002af0| 24 6e 61 6d 65 5d 20 21 | 3d 20 2d 31 7d 20 7b 0d |$name] !|= -1} {.|
|00002b00| 09 72 65 74 75 72 6e 20 | 5b 73 65 74 20 61 75 74 |.return |[set aut|
|00002b10| 6f 5f 65 78 65 63 73 28 | 24 6e 61 6d 65 29 20 5b |o_execs(|$name) [|
|00002b20| 6c 69 73 74 20 24 65 6e | 76 28 43 4f 4d 53 50 45 |list $en|v(COMSPE|
|00002b30| 43 29 20 2f 63 20 24 6e | 61 6d 65 5d 5d 0d 20 20 |C) /c $n|ame]]. |
|00002b40| 20 20 7d 0d 0d 20 20 20 | 20 69 66 20 7b 5b 6c 6c | }.. | if {[ll|
|00002b50| 65 6e 67 74 68 20 5b 66 | 69 6c 65 20 73 70 6c 69 |ength [f|ile spli|
|00002b60| 74 20 24 6e 61 6d 65 5d | 5d 20 21 3d 20 31 7d 20 |t $name]|] != 1} |
|00002b70| 7b 0d 09 66 6f 72 65 61 | 63 68 20 65 78 74 20 7b |{..forea|ch ext {|
|00002b80| 7b 7d 20 2e 63 6f 6d 20 | 2e 65 78 65 20 2e 62 61 |{} .com |.exe .ba|
|00002b90| 74 7d 20 7b 0d 09 20 20 | 20 20 73 65 74 20 66 69 |t} {.. | set fi|
|00002ba0| 6c 65 20 24 7b 6e 61 6d | 65 7d 24 7b 65 78 74 7d |le ${nam|e}${ext}|
|00002bb0| 0d 09 20 20 20 20 69 66 | 20 7b 5b 66 69 6c 65 20 |.. if| {[file |
|00002bc0| 65 78 69 73 74 73 20 24 | 66 69 6c 65 5d 20 26 26 |exists $|file] &&|
|00002bd0| 20 21 5b 66 69 6c 65 20 | 69 73 64 69 72 65 63 74 | ![file |isdirect|
|00002be0| 6f 72 79 20 24 66 69 6c | 65 5d 7d 20 7b 0d 09 09 |ory $fil|e]} {...|
|00002bf0| 72 65 74 75 72 6e 20 5b | 73 65 74 20 61 75 74 6f |return [|set auto|
|00002c00| 5f 65 78 65 63 73 28 24 | 6e 61 6d 65 29 20 5b 6c |_execs($|name) [l|
|00002c10| 69 73 74 20 24 66 69 6c | 65 5d 5d 0d 09 20 20 20 |ist $fil|e]].. |
|00002c20| 20 7d 0d 09 7d 0d 09 72 | 65 74 75 72 6e 20 22 22 | }..}..r|eturn ""|
|00002c30| 0d 20 20 20 20 7d 0d 0d | 20 20 20 20 73 65 74 20 |. }..| set |
|00002c40| 70 61 74 68 20 22 5b 66 | 69 6c 65 20 64 69 72 6e |path "[f|ile dirn|
|00002c50| 61 6d 65 20 5b 69 6e 66 | 6f 20 6e 61 6d 65 6f 66 |ame [inf|o nameof|
|00002c60| 5d 5d 3b 2e 3b 22 0d 20 | 20 20 20 69 66 20 7b 5b |]];.;". | if {[|
|00002c70| 69 6e 66 6f 20 65 78 69 | 73 74 73 20 65 6e 76 28 |info exi|sts env(|
|00002c80| 57 49 4e 44 49 52 29 5d | 7d 20 7b 0d 09 73 65 74 |WINDIR)]|} {..set|
|00002c90| 20 77 69 6e 64 69 72 20 | 24 65 6e 76 28 57 49 4e | windir |$env(WIN|
|00002ca0| 44 49 52 29 20 0d 20 20 | 20 20 7d 0d 20 20 20 20 |DIR) . | }. |
|00002cb0| 69 66 20 7b 5b 69 6e 66 | 6f 20 65 78 69 73 74 73 |if {[inf|o exists|
|00002cc0| 20 77 69 6e 64 69 72 5d | 7d 20 7b 0d 09 69 66 20 | windir]|} {..if |
|00002cd0| 7b 24 74 63 6c 5f 70 6c | 61 74 66 6f 72 6d 28 6f |{$tcl_pl|atform(o|
|00002ce0| 73 29 20 3d 3d 20 22 57 | 69 6e 64 6f 77 73 20 4e |s) == "W|indows N|
|00002cf0| 54 22 7d 20 7b 0d 09 20 | 20 20 20 61 70 70 65 6e |T"} {.. | appen|
|00002d00| 64 20 70 61 74 68 20 22 | 24 77 69 6e 64 69 72 2f |d path "|$windir/|
|00002d10| 73 79 73 74 65 6d 33 32 | 3b 22 0d 09 7d 0d 09 61 |system32|;"..}..a|
|00002d20| 70 70 65 6e 64 20 70 61 | 74 68 20 22 24 77 69 6e |ppend pa|th "$win|
|00002d30| 64 69 72 2f 73 79 73 74 | 65 6d 3b 24 77 69 6e 64 |dir/syst|em;$wind|
|00002d40| 69 72 3b 22 0d 20 20 20 | 20 7d 0d 0d 20 20 20 20 |ir;". | }.. |
|00002d50| 69 66 20 7b 5b 69 6e 66 | 6f 20 65 78 69 73 74 73 |if {[inf|o exists|
|00002d60| 20 65 6e 76 28 50 41 54 | 48 29 5d 7d 20 7b 0d 09 | env(PAT|H)]} {..|
|00002d70| 61 70 70 65 6e 64 20 70 | 61 74 68 20 24 65 6e 76 |append p|ath $env|
|00002d80| 28 50 41 54 48 29 0d 20 | 20 20 20 7d 0d 0d 20 20 |(PATH). | }.. |
|00002d90| 20 20 66 6f 72 65 61 63 | 68 20 64 69 72 20 5b 73 | foreac|h dir [s|
|00002da0| 70 6c 69 74 20 24 70 61 | 74 68 20 7b 3b 7d 5d 20 |plit $pa|th {;}] |
|00002db0| 7b 0d 09 69 66 20 7b 24 | 64 69 72 20 3d 3d 20 22 |{..if {$|dir == "|
|00002dc0| 22 7d 20 7b 0d 09 20 20 | 20 20 73 65 74 20 64 69 |"} {.. | set di|
|00002dd0| 72 20 2e 0d 09 7d 0d 09 | 66 6f 72 65 61 63 68 20 |r ...}..|foreach |
|00002de0| 65 78 74 20 7b 7b 7d 20 | 2e 63 6f 6d 20 2e 65 78 |ext {{} |.com .ex|
|00002df0| 65 20 2e 62 61 74 7d 20 | 7b 0d 09 20 20 20 20 73 |e .bat} |{.. s|
|00002e00| 65 74 20 66 69 6c 65 20 | 5b 66 69 6c 65 20 6a 6f |et file |[file jo|
|00002e10| 69 6e 20 24 64 69 72 20 | 24 7b 6e 61 6d 65 7d 24 |in $dir |${name}$|
|00002e20| 7b 65 78 74 7d 5d 0d 09 | 20 20 20 20 69 66 20 7b |{ext}]..| if {|
|00002e30| 5b 66 69 6c 65 20 65 78 | 69 73 74 73 20 24 66 69 |[file ex|ists $fi|
|00002e40| 6c 65 5d 20 26 26 20 21 | 5b 66 69 6c 65 20 69 73 |le] && !|[file is|
|00002e50| 64 69 72 65 63 74 6f 72 | 79 20 24 66 69 6c 65 5d |director|y $file]|
|00002e60| 7d 20 7b 0d 09 09 72 65 | 74 75 72 6e 20 5b 73 65 |} {...re|turn [se|
|00002e70| 74 20 61 75 74 6f 5f 65 | 78 65 63 73 28 24 6e 61 |t auto_e|xecs($na|
|00002e80| 6d 65 29 20 5b 6c 69 73 | 74 20 24 66 69 6c 65 5d |me) [lis|t $file]|
|00002e90| 5d 0d 09 20 20 20 20 7d | 0d 09 7d 0d 20 20 20 20 |].. }|..}. |
|00002ea0| 7d 0d 20 20 20 20 72 65 | 74 75 72 6e 20 22 22 0d |}. re|turn "".|
|00002eb0| 7d 0d 0d 7d 20 65 6c 73 | 65 20 7b 0d 0d 23 20 61 |}..} els|e {..# a|
|00002ec0| 75 74 6f 5f 65 78 65 63 | 6f 6b 20 2d 2d 0d 23 0d |uto_exec|ok --.#.|
|00002ed0| 23 20 52 65 74 75 72 6e | 73 20 73 74 72 69 6e 67 |# Return|s string|
|00002ee0| 20 74 68 61 74 20 69 6e | 64 69 63 61 74 65 73 20 | that in|dicates |
|00002ef0| 6e 61 6d 65 20 6f 66 20 | 70 72 6f 67 72 61 6d 20 |name of |program |
|00002f00| 74 6f 20 65 78 65 63 75 | 74 65 20 69 66 20 0d 23 |to execu|te if .#|
|00002f10| 20 6e 61 6d 65 20 63 6f | 72 72 65 73 70 6f 6e 64 | name co|rrespond|
|00002f20| 73 20 74 6f 20 61 6e 20 | 65 78 65 63 75 74 61 62 |s to an |executab|
|00002f30| 6c 65 20 69 6e 20 74 68 | 65 20 70 61 74 68 2e 20 |le in th|e path. |
|00002f40| 42 75 69 6c 64 73 20 61 | 6e 20 61 73 73 6f 63 69 |Builds a|n associ|
|00002f50| 61 74 69 76 65 20 0d 23 | 20 61 72 72 61 79 20 61 |ative .#| array a|
|00002f60| 75 74 6f 5f 65 78 65 63 | 73 20 74 68 61 74 20 63 |uto_exec|s that c|
|00002f70| 61 63 68 65 73 20 69 6e | 66 6f 72 6d 61 74 69 6f |aches in|formatio|
|00002f80| 6e 20 61 62 6f 75 74 20 | 70 72 65 76 69 6f 75 73 |n about |previous|
|00002f90| 20 63 68 65 63 6b 73 2c | 20 0d 23 20 66 6f 72 20 | checks,| .# for |
|00002fa0| 73 70 65 65 64 2e 0d 23 | 0d 23 20 41 72 67 75 6d |speed..#|.# Argum|
|00002fb0| 65 6e 74 73 3a 20 0d 23 | 20 6e 61 6d 65 20 2d 09 |ents: .#| name -.|
|00002fc0| 09 09 4e 61 6d 65 20 6f | 66 20 61 20 63 6f 6d 6d |..Name o|f a comm|
|00002fd0| 61 6e 64 2e 0d 0d 23 20 | 55 6e 69 78 20 76 65 72 |and...# |Unix ver|
|00002fe0| 73 69 6f 6e 2e 0d 23 0d | 70 72 6f 63 20 61 75 74 |sion..#.|proc aut|
|00002ff0| 6f 5f 65 78 65 63 6f 6b | 20 6e 61 6d 65 20 7b 0d |o_execok| name {.|
|00003000| 20 20 20 20 67 6c 6f 62 | 61 6c 20 61 75 74 6f 5f | glob|al auto_|
|00003010| 65 78 65 63 73 20 65 6e | 76 0d 0d 20 20 20 20 69 |execs en|v.. i|
|00003020| 66 20 5b 69 6e 66 6f 20 | 65 78 69 73 74 73 20 61 |f [info |exists a|
|00003030| 75 74 6f 5f 65 78 65 63 | 73 28 24 6e 61 6d 65 29 |uto_exec|s($name)|
|00003040| 5d 20 7b 0d 09 72 65 74 | 75 72 6e 20 24 61 75 74 |] {..ret|urn $aut|
|00003050| 6f 5f 65 78 65 63 73 28 | 24 6e 61 6d 65 29 0d 20 |o_execs(|$name). |
|00003060| 20 20 20 7d 0d 20 20 20 | 20 73 65 74 20 61 75 74 | }. | set aut|
|00003070| 6f 5f 65 78 65 63 73 28 | 24 6e 61 6d 65 29 20 22 |o_execs(|$name) "|
|00003080| 22 0d 20 20 20 20 69 66 | 20 7b 5b 6c 6c 65 6e 67 |". if| {[lleng|
|00003090| 74 68 20 5b 66 69 6c 65 | 20 73 70 6c 69 74 20 24 |th [file| split $|
|000030a0| 6e 61 6d 65 5d 5d 20 21 | 3d 20 31 7d 20 7b 0d 09 |name]] !|= 1} {..|
|000030b0| 69 66 20 7b 5b 66 69 6c | 65 20 65 78 65 63 75 74 |if {[fil|e execut|
|000030c0| 61 62 6c 65 20 24 6e 61 | 6d 65 5d 20 26 26 20 21 |able $na|me] && !|
|000030d0| 5b 66 69 6c 65 20 69 73 | 64 69 72 65 63 74 6f 72 |[file is|director|
|000030e0| 79 20 24 6e 61 6d 65 5d | 7d 20 7b 0d 09 20 20 20 |y $name]|} {.. |
|000030f0| 20 73 65 74 20 61 75 74 | 6f 5f 65 78 65 63 73 28 | set aut|o_execs(|
|00003100| 24 6e 61 6d 65 29 20 5b | 6c 69 73 74 20 24 6e 61 |$name) [|list $na|
|00003110| 6d 65 5d 0d 09 7d 0d 09 | 72 65 74 75 72 6e 20 24 |me]..}..|return $|
|00003120| 61 75 74 6f 5f 65 78 65 | 63 73 28 24 6e 61 6d 65 |auto_exe|cs($name|
|00003130| 29 0d 20 20 20 20 7d 0d | 20 20 20 20 66 6f 72 65 |). }.| fore|
|00003140| 61 63 68 20 64 69 72 20 | 5b 73 70 6c 69 74 20 24 |ach dir |[split $|
|00003150| 65 6e 76 28 50 41 54 48 | 29 20 3a 5d 20 7b 0d 09 |env(PATH|) :] {..|
|00003160| 69 66 20 7b 24 64 69 72 | 20 3d 3d 20 22 22 7d 20 |if {$dir| == ""} |
|00003170| 7b 0d 09 20 20 20 20 73 | 65 74 20 64 69 72 20 2e |{.. s|et dir .|
|00003180| 0d 09 7d 0d 09 73 65 74 | 20 66 69 6c 65 20 5b 66 |..}..set| file [f|
|00003190| 69 6c 65 20 6a 6f 69 6e | 20 24 64 69 72 20 24 6e |ile join| $dir $n|
|000031a0| 61 6d 65 5d 0d 09 69 66 | 20 7b 5b 66 69 6c 65 20 |ame]..if| {[file |
|000031b0| 65 78 65 63 75 74 61 62 | 6c 65 20 24 66 69 6c 65 |executab|le $file|
|000031c0| 5d 20 26 26 20 21 5b 66 | 69 6c 65 20 69 73 64 69 |] && ![f|ile isdi|
|000031d0| 72 65 63 74 6f 72 79 20 | 24 66 69 6c 65 5d 7d 20 |rectory |$file]} |
|000031e0| 7b 0d 09 20 20 20 20 73 | 65 74 20 61 75 74 6f 5f |{.. s|et auto_|
|000031f0| 65 78 65 63 73 28 24 6e | 61 6d 65 29 20 5b 6c 69 |execs($n|ame) [li|
|00003200| 73 74 20 24 66 69 6c 65 | 5d 0d 09 20 20 20 20 72 |st $file|].. r|
|00003210| 65 74 75 72 6e 20 24 61 | 75 74 6f 5f 65 78 65 63 |eturn $a|uto_exec|
|00003220| 73 28 24 6e 61 6d 65 29 | 0d 09 7d 0d 20 20 20 20 |s($name)|..}. |
|00003230| 7d 0d 20 20 20 20 72 65 | 74 75 72 6e 20 22 22 0d |}. re|turn "".|
|00003240| 7d 0d 0d 7d 0d 23 20 61 | 75 74 6f 5f 72 65 73 65 |}..}.# a|uto_rese|
|00003250| 74 20 2d 2d 0d 23 20 44 | 65 73 74 72 6f 79 20 61 |t --.# D|estroy a|
|00003260| 6c 6c 20 63 61 63 68 65 | 64 20 69 6e 66 6f 72 6d |ll cache|d inform|
|00003270| 61 74 69 6f 6e 20 66 6f | 72 20 61 75 74 6f 2d 6c |ation fo|r auto-l|
|00003280| 6f 61 64 69 6e 67 20 61 | 6e 64 20 61 75 74 6f 2d |oading a|nd auto-|
|00003290| 65 78 65 63 75 74 69 6f | 6e 2c 0d 23 20 73 6f 20 |executio|n,.# so |
|000032a0| 74 68 61 74 20 74 68 65 | 20 69 6e 66 6f 72 6d 61 |that the| informa|
|000032b0| 74 69 6f 6e 20 67 65 74 | 73 20 72 65 63 6f 6d 70 |tion get|s recomp|
|000032c0| 75 74 65 64 20 74 68 65 | 20 6e 65 78 74 20 74 69 |uted the| next ti|
|000032d0| 6d 65 20 69 74 27 73 20 | 6e 65 65 64 65 64 2e 0d |me it's |needed..|
|000032e0| 23 20 41 6c 73 6f 20 64 | 65 6c 65 74 65 20 61 6e |# Also d|elete an|
|000032f0| 79 20 70 72 6f 63 65 64 | 75 72 65 73 20 74 68 61 |y proced|ures tha|
|00003300| 74 20 61 72 65 20 6c 69 | 73 74 65 64 20 69 6e 20 |t are li|sted in |
|00003310| 74 68 65 20 61 75 74 6f | 2d 6c 6f 61 64 20 69 6e |the auto|-load in|
|00003320| 64 65 78 0d 23 20 65 78 | 63 65 70 74 20 74 68 6f |dex.# ex|cept tho|
|00003330| 73 65 20 64 65 66 69 6e | 65 64 20 69 6e 20 74 68 |se defin|ed in th|
|00003340| 69 73 20 66 69 6c 65 2e | 0d 23 0d 23 20 41 72 67 |is file.|.#.# Arg|
|00003350| 75 6d 65 6e 74 73 3a 20 | 0d 23 20 4e 6f 6e 65 2e |uments: |.# None.|
|00003360| 0d 0d 70 72 6f 63 20 61 | 75 74 6f 5f 72 65 73 65 |..proc a|uto_rese|
|00003370| 74 20 7b 7d 20 7b 0d 20 | 20 20 20 67 6c 6f 62 61 |t {} {. | globa|
|00003380| 6c 20 61 75 74 6f 5f 65 | 78 65 63 73 20 61 75 74 |l auto_e|xecs aut|
|00003390| 6f 5f 69 6e 64 65 78 20 | 61 75 74 6f 5f 6f 6c 64 |o_index |auto_old|
|000033a0| 70 61 74 68 0d 20 20 20 | 20 66 6f 72 65 61 63 68 |path. | foreach|
|000033b0| 20 70 20 5b 69 6e 66 6f | 20 70 72 6f 63 73 5d 20 | p [info| procs] |
|000033c0| 7b 0d 09 69 66 20 7b 5b | 69 6e 66 6f 20 65 78 69 |{..if {[|info exi|
|000033d0| 73 74 73 20 61 75 74 6f | 5f 69 6e 64 65 78 28 24 |sts auto|_index($|
|000033e0| 70 29 5d 20 26 26 20 21 | 5b 73 74 72 69 6e 67 20 |p)] && !|[string |
|000033f0| 6d 61 74 63 68 20 61 75 | 74 6f 5f 2a 20 24 70 5d |match au|to_* $p]|
|00003400| 0d 09 09 26 26 20 28 5b | 6c 73 65 61 72 63 68 20 |...&& ([|lsearch |
|00003410| 2d 65 78 61 63 74 20 7b | 75 6e 6b 6e 6f 77 6e 20 |-exact {|unknown |
|00003420| 70 6b 67 5f 6d 6b 49 6e | 64 65 78 20 74 63 6c 50 |pkg_mkIn|dex tclP|
|00003430| 6b 67 53 65 74 75 70 0d | 09 09 09 74 63 6c 50 6b |kgSetup.|...tclPk|
|00003440| 67 55 6e 6b 6e 6f 77 6e | 7d 20 24 70 5d 20 3c 20 |gUnknown|} $p] < |
|00003450| 30 29 7d 20 7b 0d 09 20 | 20 20 20 72 65 6e 61 6d |0)} {.. | renam|
|00003460| 65 20 24 70 20 7b 7d 0d | 09 7d 0d 20 20 20 20 7d |e $p {}.|.}. }|
|00003470| 0d 20 20 20 20 63 61 74 | 63 68 20 7b 75 6e 73 65 |. cat|ch {unse|
|00003480| 74 20 61 75 74 6f 5f 65 | 78 65 63 73 7d 0d 20 20 |t auto_e|xecs}. |
|00003490| 20 20 63 61 74 63 68 20 | 7b 75 6e 73 65 74 20 61 | catch |{unset a|
|000034a0| 75 74 6f 5f 69 6e 64 65 | 78 7d 0d 20 20 20 20 63 |uto_inde|x}. c|
|000034b0| 61 74 63 68 20 7b 75 6e | 73 65 74 20 61 75 74 6f |atch {un|set auto|
|000034c0| 5f 6f 6c 64 70 61 74 68 | 7d 0d 7d 0d 0d 23 20 61 |_oldpath|}.}..# a|
|000034d0| 75 74 6f 5f 6d 6b 69 6e | 64 65 78 20 2d 2d 0d 23 |uto_mkin|dex --.#|
|000034e0| 20 52 65 67 65 6e 65 72 | 61 74 65 20 61 20 74 63 | Regener|ate a tc|
|000034f0| 6c 49 6e 64 65 78 20 66 | 69 6c 65 20 66 72 6f 6d |lIndex f|ile from|
|00003500| 20 54 63 6c 20 73 6f 75 | 72 63 65 20 66 69 6c 65 | Tcl sou|rce file|
|00003510| 73 2e 20 20 54 61 6b 65 | 73 20 61 73 20 61 72 67 |s. Take|s as arg|
|00003520| 75 6d 65 6e 74 0d 23 20 | 74 68 65 20 6e 61 6d 65 |ument.# |the name|
|00003530| 20 6f 66 20 74 68 65 20 | 64 69 72 65 63 74 6f 72 | of the |director|
|00003540| 79 20 69 6e 20 77 68 69 | 63 68 20 74 68 65 20 74 |y in whi|ch the t|
|00003550| 63 6c 49 6e 64 65 78 20 | 66 69 6c 65 20 69 73 20 |clIndex |file is |
|00003560| 74 6f 20 62 65 20 70 6c | 61 63 65 64 2c 0d 23 20 |to be pl|aced,.# |
|00003570| 66 6f 6c 6c 6f 77 65 64 | 20 62 79 20 61 6e 79 20 |followed| by any |
|00003580| 6e 75 6d 62 65 72 20 6f | 66 20 67 6c 6f 62 20 70 |number o|f glob p|
|00003590| 61 74 74 65 72 6e 73 20 | 74 6f 20 75 73 65 20 69 |atterns |to use i|
|000035a0| 6e 20 74 68 61 74 20 64 | 69 72 65 63 74 6f 72 79 |n that d|irectory|
|000035b0| 20 74 6f 0d 23 20 6c 6f | 63 61 74 65 20 61 6c 6c | to.# lo|cate all|
|000035c0| 20 6f 66 20 74 68 65 20 | 72 65 6c 65 76 61 6e 74 | of the |relevant|
|000035d0| 20 66 69 6c 65 73 2e 0d | 23 0d 23 20 41 72 67 75 | files..|#.# Argu|
|000035e0| 6d 65 6e 74 73 3a 20 0d | 23 20 64 69 72 20 2d 09 |ments: .|# dir -.|
|000035f0| 09 09 4e 61 6d 65 20 6f | 66 20 74 68 65 20 64 69 |..Name o|f the di|
|00003600| 72 65 63 74 6f 72 79 20 | 69 6e 20 77 68 69 63 68 |rectory |in which|
|00003610| 20 74 6f 20 63 72 65 61 | 74 65 20 61 6e 20 69 6e | to crea|te an in|
|00003620| 64 65 78 2e 0d 23 20 61 | 72 67 73 20 2d 09 09 41 |dex..# a|rgs -..A|
|00003630| 6e 79 20 6e 75 6d 62 65 | 72 20 6f 66 20 61 64 64 |ny numbe|r of add|
|00003640| 69 74 69 6f 6e 61 6c 20 | 61 72 67 75 6d 65 6e 74 |itional |argument|
|00003650| 73 20 67 69 76 69 6e 67 | 20 74 68 65 0d 23 09 09 |s giving| the.#..|
|00003660| 09 6e 61 6d 65 73 20 6f | 66 20 66 69 6c 65 73 20 |.names o|f files |
|00003670| 77 69 74 68 69 6e 20 64 | 69 72 2e 20 20 49 66 20 |within d|ir. If |
|00003680| 6e 6f 20 61 64 64 69 74 | 69 6f 6e 61 6c 0d 23 09 |no addit|ional.#.|
|00003690| 09 09 61 72 65 20 67 69 | 76 65 6e 20 61 75 74 6f |..are gi|ven auto|
|000036a0| 5f 6d 6b 69 6e 64 65 78 | 20 77 69 6c 6c 20 6c 6f |_mkindex| will lo|
|000036b0| 6f 6b 20 66 6f 72 20 2a | 2e 74 63 6c 2e 0d 0d 70 |ok for *|.tcl...p|
|000036c0| 72 6f 63 20 61 75 74 6f | 5f 6d 6b 69 6e 64 65 78 |roc auto|_mkindex|
|000036d0| 20 7b 64 69 72 20 61 72 | 67 73 7d 20 7b 0d 20 20 | {dir ar|gs} {. |
|000036e0| 20 20 67 6c 6f 62 61 6c | 20 65 72 72 6f 72 43 6f | global| errorCo|
|000036f0| 64 65 20 65 72 72 6f 72 | 49 6e 66 6f 0d 20 20 20 |de error|Info. |
|00003700| 20 73 65 74 20 6f 6c 64 | 44 69 72 20 5b 70 77 64 | set old|Dir [pwd|
|00003710| 5d 0d 20 20 20 20 63 64 | 20 24 64 69 72 0d 20 20 |]. cd| $dir. |
|00003720| 20 20 73 65 74 20 64 69 | 72 20 5b 70 77 64 5d 0d | set di|r [pwd].|
|00003730| 20 20 20 20 61 70 70 65 | 6e 64 20 69 6e 64 65 78 | appe|nd index|
|00003740| 20 22 23 20 54 63 6c 20 | 61 75 74 6f 6c 6f 61 64 | "# Tcl |autoload|
|00003750| 20 69 6e 64 65 78 20 66 | 69 6c 65 2c 20 76 65 72 | index f|ile, ver|
|00003760| 73 69 6f 6e 20 32 2e 30 | 5c 6e 22 0d 20 20 20 20 |sion 2.0|\n". |
|00003770| 61 70 70 65 6e 64 20 69 | 6e 64 65 78 20 22 23 20 |append i|ndex "# |
|00003780| 54 68 69 73 20 66 69 6c | 65 20 69 73 20 67 65 6e |This fil|e is gen|
|00003790| 65 72 61 74 65 64 20 62 | 79 20 74 68 65 20 5c 22 |erated b|y the \"|
|000037a0| 61 75 74 6f 5f 6d 6b 69 | 6e 64 65 78 5c 22 20 63 |auto_mki|ndex\" c|
|000037b0| 6f 6d 6d 61 6e 64 5c 6e | 22 0d 20 20 20 20 61 70 |ommand\n|". ap|
|000037c0| 70 65 6e 64 20 69 6e 64 | 65 78 20 22 23 20 61 6e |pend ind|ex "# an|
|000037d0| 64 20 73 6f 75 72 63 65 | 64 20 74 6f 20 73 65 74 |d source|d to set|
|000037e0| 20 75 70 20 69 6e 64 65 | 78 69 6e 67 20 69 6e 66 | up inde|xing inf|
|000037f0| 6f 72 6d 61 74 69 6f 6e | 20 66 6f 72 20 6f 6e 65 |ormation| for one|
|00003800| 20 6f 72 5c 6e 22 0d 20 | 20 20 20 61 70 70 65 6e | or\n". | appen|
|00003810| 64 20 69 6e 64 65 78 20 | 22 23 20 6d 6f 72 65 20 |d index |"# more |
|00003820| 63 6f 6d 6d 61 6e 64 73 | 2e 20 20 54 79 70 69 63 |commands|. Typic|
|00003830| 61 6c 6c 79 20 65 61 63 | 68 20 6c 69 6e 65 20 69 |ally eac|h line i|
|00003840| 73 20 61 20 63 6f 6d 6d | 61 6e 64 20 74 68 61 74 |s a comm|and that|
|00003850| 5c 6e 22 0d 20 20 20 20 | 61 70 70 65 6e 64 20 69 |\n". |append i|
|00003860| 6e 64 65 78 20 22 23 20 | 73 65 74 73 20 61 6e 20 |ndex "# |sets an |
|00003870| 65 6c 65 6d 65 6e 74 20 | 69 6e 20 74 68 65 20 61 |element |in the a|
|00003880| 75 74 6f 5f 69 6e 64 65 | 78 20 61 72 72 61 79 2c |uto_inde|x array,|
|00003890| 20 77 68 65 72 65 20 74 | 68 65 5c 6e 22 0d 20 20 | where t|he\n". |
|000038a0| 20 20 61 70 70 65 6e 64 | 20 69 6e 64 65 78 20 22 | append| index "|
|000038b0| 23 20 65 6c 65 6d 65 6e | 74 20 6e 61 6d 65 20 69 |# elemen|t name i|
|000038c0| 73 20 74 68 65 20 6e 61 | 6d 65 20 6f 66 20 61 20 |s the na|me of a |
|000038d0| 63 6f 6d 6d 61 6e 64 20 | 61 6e 64 20 74 68 65 20 |command |and the |
|000038e0| 76 61 6c 75 65 20 69 73 | 5c 6e 22 0d 20 20 20 20 |value is|\n". |
|000038f0| 61 70 70 65 6e 64 20 69 | 6e 64 65 78 20 22 23 20 |append i|ndex "# |
|00003900| 61 20 73 63 72 69 70 74 | 20 74 68 61 74 20 6c 6f |a script| that lo|
|00003910| 61 64 73 20 74 68 65 20 | 63 6f 6d 6d 61 6e 64 2e |ads the |command.|
|00003920| 5c 6e 5c 6e 22 0d 20 20 | 20 20 69 66 20 7b 24 61 |\n\n". | if {$a|
|00003930| 72 67 73 20 3d 3d 20 22 | 22 7d 20 7b 0d 09 73 65 |rgs == "|"} {..se|
|00003940| 74 20 61 72 67 73 20 2a | 2e 74 63 6c 0d 20 20 20 |t args *|.tcl. |
|00003950| 20 7d 0d 20 20 20 20 66 | 6f 72 65 61 63 68 20 66 | }. f|oreach f|
|00003960| 69 6c 65 20 5b 65 76 61 | 6c 20 67 6c 6f 62 20 24 |ile [eva|l glob $|
|00003970| 61 72 67 73 5d 20 7b 0d | 09 73 65 74 20 66 20 22 |args] {.|.set f "|
|00003980| 22 0d 09 73 65 74 20 65 | 72 72 6f 72 20 5b 63 61 |"..set e|rror [ca|
|00003990| 74 63 68 20 7b 0d 09 20 | 20 20 20 73 65 74 20 66 |tch {.. | set f|
|000039a0| 20 5b 6f 70 65 6e 20 24 | 66 69 6c 65 5d 0d 09 20 | [open $|file].. |
|000039b0| 20 20 20 77 68 69 6c 65 | 20 7b 5b 67 65 74 73 20 | while| {[gets |
|000039c0| 24 66 20 6c 69 6e 65 5d | 20 3e 3d 20 30 7d 20 7b |$f line]| >= 0} {|
|000039d0| 0d 09 09 69 66 20 5b 72 | 65 67 65 78 70 20 7b 5e |...if [r|egexp {^|
|000039e0| 70 72 6f 63 5b 20 09 5d | 2b 28 5b 5e 20 09 5d 2a |proc[ .]|+([^ .]*|
|000039f0| 29 7d 20 24 6c 69 6e 65 | 20 6d 61 74 63 68 20 70 |)} $line| match p|
|00003a00| 72 6f 63 4e 61 6d 65 5d | 20 7b 0d 09 09 20 20 20 |rocName]| {... |
|00003a10| 20 61 70 70 65 6e 64 20 | 69 6e 64 65 78 20 22 73 | append |index "s|
|00003a20| 65 74 20 5b 6c 69 73 74 | 20 61 75 74 6f 5f 69 6e |et [list| auto_in|
|00003a30| 64 65 78 28 24 70 72 6f | 63 4e 61 6d 65 29 5d 22 |dex($pro|cName)]"|
|00003a40| 0d 09 09 20 20 20 20 61 | 70 70 65 6e 64 20 69 6e |... a|ppend in|
|00003a50| 64 65 78 20 22 20 5c 5b | 6c 69 73 74 20 73 6f 75 |dex " \[|list sou|
|00003a60| 72 63 65 20 5c 5b 66 69 | 6c 65 20 6a 6f 69 6e 20 |rce \[fi|le join |
|00003a70| 5c 24 64 69 72 20 5b 6c | 69 73 74 20 24 66 69 6c |\$dir [l|ist $fil|
|00003a80| 65 5d 5c 5d 5c 5d 5c 6e | 22 0d 09 09 7d 0d 09 20 |e]\]\]\n|"...}.. |
|00003a90| 20 20 20 7d 0d 09 20 20 | 20 20 63 6c 6f 73 65 20 | }.. | close |
|00003aa0| 24 66 0d 09 7d 20 6d 73 | 67 5d 0d 09 69 66 20 24 |$f..} ms|g]..if $|
|00003ab0| 65 72 72 6f 72 20 7b 0d | 09 20 20 20 20 73 65 74 |error {.|. set|
|00003ac0| 20 63 6f 64 65 20 24 65 | 72 72 6f 72 43 6f 64 65 | code $e|rrorCode|
|00003ad0| 0d 09 20 20 20 20 73 65 | 74 20 69 6e 66 6f 20 24 |.. se|t info $|
|00003ae0| 65 72 72 6f 72 49 6e 66 | 6f 0d 09 20 20 20 20 63 |errorInf|o.. c|
|00003af0| 61 74 63 68 20 7b 63 6c | 6f 73 65 20 24 66 7d 0d |atch {cl|ose $f}.|
|00003b00| 09 20 20 20 20 63 64 20 | 24 6f 6c 64 44 69 72 0d |. cd |$oldDir.|
|00003b10| 09 20 20 20 20 65 72 72 | 6f 72 20 24 6d 73 67 20 |. err|or $msg |
|00003b20| 24 69 6e 66 6f 20 24 63 | 6f 64 65 0d 09 7d 0d 20 |$info $c|ode..}. |
|00003b30| 20 20 20 7d 0d 20 20 20 | 20 73 65 74 20 66 20 22 | }. | set f "|
|00003b40| 22 0d 20 20 20 20 73 65 | 74 20 65 72 72 6f 72 20 |". se|t error |
|00003b50| 5b 63 61 74 63 68 20 7b | 0d 09 73 65 74 20 66 20 |[catch {|..set f |
|00003b60| 5b 6f 70 65 6e 20 74 63 | 6c 49 6e 64 65 78 20 77 |[open tc|lIndex w|
|00003b70| 5d 0d 09 70 75 74 73 20 | 24 66 20 24 69 6e 64 65 |]..puts |$f $inde|
|00003b80| 78 20 6e 6f 6e 65 77 6c | 69 6e 65 0d 09 63 6c 6f |x nonewl|ine..clo|
|00003b90| 73 65 20 24 66 0d 09 63 | 64 20 24 6f 6c 64 44 69 |se $f..c|d $oldDi|
|00003ba0| 72 0d 20 20 20 20 7d 20 | 6d 73 67 5d 0d 20 20 20 |r. } |msg]. |
|00003bb0| 20 69 66 20 24 65 72 72 | 6f 72 20 7b 0d 09 73 65 | if $err|or {..se|
|00003bc0| 74 20 63 6f 64 65 20 24 | 65 72 72 6f 72 43 6f 64 |t code $|errorCod|
|00003bd0| 65 0d 09 73 65 74 20 69 | 6e 66 6f 20 24 65 72 72 |e..set i|nfo $err|
|00003be0| 6f 72 49 6e 66 6f 0d 09 | 63 61 74 63 68 20 7b 63 |orInfo..|catch {c|
|00003bf0| 6c 6f 73 65 20 24 66 7d | 0d 09 63 64 20 24 6f 6c |lose $f}|..cd $ol|
|00003c00| 64 44 69 72 0d 09 65 72 | 72 6f 72 20 24 6d 73 67 |dDir..er|ror $msg|
|00003c10| 20 24 69 6e 66 6f 20 24 | 63 6f 64 65 0d 20 20 20 | $info $|code. |
|00003c20| 20 7d 0d 7d 0d 0d 23 20 | 70 6b 67 5f 6d 6b 49 6e | }.}..# |pkg_mkIn|
|00003c30| 64 65 78 20 2d 2d 0d 23 | 20 54 68 69 73 20 70 72 |dex --.#| This pr|
|00003c40| 6f 63 65 64 75 72 65 20 | 63 72 65 61 74 65 73 20 |ocedure |creates |
|00003c50| 61 20 70 61 63 6b 61 67 | 65 20 69 6e 64 65 78 20 |a packag|e index |
|00003c60| 69 6e 20 61 20 67 69 76 | 65 6e 20 64 69 72 65 63 |in a giv|en direc|
|00003c70| 74 6f 72 79 2e 20 20 54 | 68 65 0d 23 20 70 61 63 |tory. T|he.# pac|
|00003c80| 6b 61 67 65 20 69 6e 64 | 65 78 20 63 6f 6e 73 69 |kage ind|ex consi|
|00003c90| 73 74 73 20 6f 66 20 61 | 20 22 70 6b 67 49 6e 64 |sts of a| "pkgInd|
|00003ca0| 65 78 2e 74 63 6c 22 20 | 66 69 6c 65 20 77 68 6f |ex.tcl" |file who|
|00003cb0| 73 65 20 63 6f 6e 74 65 | 6e 74 73 20 61 72 65 0d |se conte|nts are.|
|00003cc0| 23 20 61 20 54 63 6c 20 | 73 63 72 69 70 74 20 74 |# a Tcl |script t|
|00003cd0| 68 61 74 20 73 65 74 73 | 20 75 70 20 70 61 63 6b |hat sets| up pack|
|00003ce0| 61 67 65 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |age info|rmation |
|00003cf0| 77 69 74 68 20 22 70 61 | 63 6b 61 67 65 20 72 65 |with "pa|ckage re|
|00003d00| 71 75 69 72 65 22 0d 23 | 20 63 6f 6d 6d 61 6e 64 |quire".#| command|
|00003d10| 73 2e 20 20 54 68 65 20 | 63 6f 6d 6d 61 6e 64 73 |s. The |commands|
|00003d20| 20 64 65 73 63 72 69 62 | 65 20 61 6c 6c 20 6f 66 | describ|e all of|
|00003d30| 20 74 68 65 20 70 61 63 | 6b 61 67 65 73 20 64 65 | the pac|kages de|
|00003d40| 66 69 6e 65 64 20 62 79 | 20 74 68 65 0d 23 20 66 |fined by| the.# f|
|00003d50| 69 6c 65 73 20 67 69 76 | 65 6e 20 61 73 20 61 72 |iles giv|en as ar|
|00003d60| 67 75 6d 65 6e 74 73 2e | 0d 23 0d 23 20 41 72 67 |guments.|.#.# Arg|
|00003d70| 75 6d 65 6e 74 73 3a 0d | 23 20 64 69 72 20 2d 09 |uments:.|# dir -.|
|00003d80| 09 09 4e 61 6d 65 20 6f | 66 20 74 68 65 20 64 69 |..Name o|f the di|
|00003d90| 72 65 63 74 6f 72 79 20 | 69 6e 20 77 68 69 63 68 |rectory |in which|
|00003da0| 20 74 6f 20 63 72 65 61 | 74 65 20 74 68 65 20 69 | to crea|te the i|
|00003db0| 6e 64 65 78 2e 0d 23 20 | 61 72 67 73 20 2d 09 09 |ndex..# |args -..|
|00003dc0| 41 6e 79 20 6e 75 6d 62 | 65 72 20 6f 66 20 61 64 |Any numb|er of ad|
|00003dd0| 64 69 74 69 6f 6e 61 6c | 20 61 72 67 75 6d 65 6e |ditional| argumen|
|00003de0| 74 73 2c 20 65 61 63 68 | 20 67 69 76 69 6e 67 0d |ts, each| giving.|
|00003df0| 23 09 09 09 61 20 67 6c | 6f 62 20 70 61 74 74 65 |#...a gl|ob patte|
|00003e00| 72 6e 20 74 68 61 74 20 | 6d 61 74 63 68 65 73 20 |rn that |matches |
|00003e10| 74 68 65 20 6e 61 6d 65 | 73 20 6f 66 20 6f 6e 65 |the name|s of one|
|00003e20| 20 6f 72 0d 23 09 09 09 | 6d 6f 72 65 20 73 68 61 | or.#...|more sha|
|00003e30| 72 65 64 20 6c 69 62 72 | 61 72 69 65 73 20 6f 72 |red libr|aries or|
|00003e40| 20 54 63 6c 20 73 63 72 | 69 70 74 20 66 69 6c 65 | Tcl scr|ipt file|
|00003e50| 73 20 69 6e 0d 23 09 09 | 09 64 69 72 2e 0d 0d 70 |s in.#..|.dir...p|
|00003e60| 72 6f 63 20 70 6b 67 5f | 6d 6b 49 6e 64 65 78 20 |roc pkg_|mkIndex |
|00003e70| 7b 64 69 72 20 61 72 67 | 73 7d 20 7b 0d 20 20 20 |{dir arg|s} {. |
|00003e80| 20 67 6c 6f 62 61 6c 20 | 65 72 72 6f 72 43 6f 64 | global |errorCod|
|00003e90| 65 20 65 72 72 6f 72 49 | 6e 66 6f 0d 20 20 20 20 |e errorI|nfo. |
|00003ea0| 69 66 20 7b 5b 6c 6c 65 | 6e 67 74 68 20 24 61 72 |if {[lle|ngth $ar|
|00003eb0| 67 73 5d 20 3d 3d 20 30 | 7d 20 7b 0d 09 72 65 74 |gs] == 0|} {..ret|
|00003ec0| 75 72 6e 20 2d 63 6f 64 | 65 20 65 72 72 6f 72 20 |urn -cod|e error |
|00003ed0| 22 77 72 6f 6e 67 20 23 | 20 61 72 67 73 3a 20 73 |"wrong #| args: s|
|00003ee0| 68 6f 75 6c 64 20 62 65 | 5c 0d 09 09 5c 22 70 6b |hould be|\...\"pk|
|00003ef0| 67 5f 6d 6b 49 6e 64 65 | 78 20 64 69 72 20 70 61 |g_mkInde|x dir pa|
|00003f00| 74 74 65 72 6e 20 3f 70 | 61 74 74 65 72 6e 20 2e |ttern ?p|attern .|
|00003f10| 2e 2e 3f 5c 22 22 3b 0d | 20 20 20 20 7d 0d 20 20 |..?\"";.| }. |
|00003f20| 20 20 61 70 70 65 6e 64 | 20 69 6e 64 65 78 20 22 | append| index "|
|00003f30| 23 20 54 63 6c 20 70 61 | 63 6b 61 67 65 20 69 6e |# Tcl pa|ckage in|
|00003f40| 64 65 78 20 66 69 6c 65 | 2c 20 76 65 72 73 69 6f |dex file|, versio|
|00003f50| 6e 20 31 2e 30 5c 6e 22 | 0d 20 20 20 20 61 70 70 |n 1.0\n"|. app|
|00003f60| 65 6e 64 20 69 6e 64 65 | 78 20 22 23 20 54 68 69 |end inde|x "# Thi|
|00003f70| 73 20 66 69 6c 65 20 69 | 73 20 67 65 6e 65 72 61 |s file i|s genera|
|00003f80| 74 65 64 20 62 79 20 74 | 68 65 20 5c 22 70 6b 67 |ted by t|he \"pkg|
|00003f90| 5f 6d 6b 49 6e 64 65 78 | 5c 22 20 63 6f 6d 6d 61 |_mkIndex|\" comma|
|00003fa0| 6e 64 5c 6e 22 0d 20 20 | 20 20 61 70 70 65 6e 64 |nd\n". | append|
|00003fb0| 20 69 6e 64 65 78 20 22 | 23 20 61 6e 64 20 73 6f | index "|# and so|
|00003fc0| 75 72 63 65 64 20 65 69 | 74 68 65 72 20 77 68 65 |urced ei|ther whe|
|00003fd0| 6e 20 61 6e 20 61 70 70 | 6c 69 63 61 74 69 6f 6e |n an app|lication|
|00003fe0| 20 73 74 61 72 74 73 20 | 75 70 20 6f 72 5c 6e 22 | starts |up or\n"|
|00003ff0| 0d 20 20 20 20 61 70 70 | 65 6e 64 20 69 6e 64 65 |. app|end inde|
|00004000| 78 20 22 23 20 62 79 20 | 61 20 5c 22 70 61 63 6b |x "# by |a \"pack|
|00004010| 61 67 65 20 75 6e 6b 6e | 6f 77 6e 5c 22 20 73 63 |age unkn|own\" sc|
|00004020| 72 69 70 74 2e 20 20 49 | 74 20 69 6e 76 6f 6b 65 |ript. I|t invoke|
|00004030| 73 20 74 68 65 5c 6e 22 | 0d 20 20 20 20 61 70 70 |s the\n"|. app|
|00004040| 65 6e 64 20 69 6e 64 65 | 78 20 22 23 20 5c 22 70 |end inde|x "# \"p|
|00004050| 61 63 6b 61 67 65 20 69 | 66 6e 65 65 64 65 64 5c |ackage i|fneeded\|
|00004060| 22 20 63 6f 6d 6d 61 6e | 64 20 74 6f 20 73 65 74 |" comman|d to set|
|00004070| 20 75 70 20 70 61 63 6b | 61 67 65 2d 72 65 6c 61 | up pack|age-rela|
|00004080| 74 65 64 5c 6e 22 0d 20 | 20 20 20 61 70 70 65 6e |ted\n". | appen|
|00004090| 64 20 69 6e 64 65 78 20 | 22 23 20 69 6e 66 6f 72 |d index |"# infor|
|000040a0| 6d 61 74 69 6f 6e 20 73 | 6f 20 74 68 61 74 20 70 |mation s|o that p|
|000040b0| 61 63 6b 61 67 65 73 20 | 77 69 6c 6c 20 62 65 20 |ackages |will be |
|000040c0| 6c 6f 61 64 65 64 20 61 | 75 74 6f 6d 61 74 69 63 |loaded a|utomatic|
|000040d0| 61 6c 6c 79 5c 6e 22 0d | 20 20 20 20 61 70 70 65 |ally\n".| appe|
|000040e0| 6e 64 20 69 6e 64 65 78 | 20 22 23 20 69 6e 20 72 |nd index| "# in r|
|000040f0| 65 73 70 6f 6e 73 65 20 | 74 6f 20 5c 22 70 61 63 |esponse |to \"pac|
|00004100| 6b 61 67 65 20 72 65 71 | 75 69 72 65 5c 22 20 63 |kage req|uire\" c|
|00004110| 6f 6d 6d 61 6e 64 73 2e | 20 20 57 68 65 6e 20 74 |ommands.| When t|
|00004120| 68 69 73 5c 6e 22 0d 20 | 20 20 20 61 70 70 65 6e |his\n". | appen|
|00004130| 64 20 69 6e 64 65 78 20 | 22 23 20 73 63 72 69 70 |d index |"# scrip|
|00004140| 74 20 69 73 20 73 6f 75 | 72 63 65 64 2c 20 74 68 |t is sou|rced, th|
|00004150| 65 20 76 61 72 69 61 62 | 6c 65 20 5c 24 64 69 72 |e variab|le \$dir|
|00004160| 20 6d 75 73 74 20 63 6f | 6e 74 61 69 6e 20 74 68 | must co|ntain th|
|00004170| 65 5c 6e 22 0d 20 20 20 | 20 61 70 70 65 6e 64 20 |e\n". | append |
|00004180| 69 6e 64 65 78 20 22 23 | 20 66 75 6c 6c 20 70 61 |index "#| full pa|
|00004190| 74 68 20 6e 61 6d 65 20 | 6f 66 20 74 68 69 73 20 |th name |of this |
|000041a0| 66 69 6c 65 27 73 20 64 | 69 72 65 63 74 6f 72 79 |file's d|irectory|
|000041b0| 2e 5c 6e 22 0d 20 20 20 | 20 73 65 74 20 6f 6c 64 |.\n". | set old|
|000041c0| 44 69 72 20 5b 70 77 64 | 5d 0d 20 20 20 20 63 64 |Dir [pwd|]. cd|
|000041d0| 20 24 64 69 72 0d 20 20 | 20 20 66 6f 72 65 61 63 | $dir. | foreac|
|000041e0| 68 20 66 69 6c 65 20 5b | 65 76 61 6c 20 67 6c 6f |h file [|eval glo|
|000041f0| 62 20 24 61 72 67 73 5d | 20 7b 0d 09 23 20 46 6f |b $args]| {..# Fo|
|00004200| 72 20 65 61 63 68 20 66 | 69 6c 65 2c 20 66 69 67 |r each f|ile, fig|
|00004210| 75 72 65 20 6f 75 74 20 | 77 68 61 74 20 63 6f 6d |ure out |what com|
|00004220| 6d 61 6e 64 73 20 61 6e | 64 20 70 61 63 6b 61 67 |mands an|d packag|
|00004230| 65 73 20 69 74 20 70 72 | 6f 76 69 64 65 73 2e 0d |es it pr|ovides..|
|00004240| 09 23 20 54 6f 20 64 6f | 20 74 68 69 73 2c 20 63 |.# To do| this, c|
|00004250| 72 65 61 74 65 20 61 20 | 63 68 69 6c 64 20 69 6e |reate a |child in|
|00004260| 74 65 72 70 72 65 74 65 | 72 2c 20 6c 6f 61 64 20 |terprete|r, load |
|00004270| 74 68 65 20 66 69 6c 65 | 20 69 6e 74 6f 20 74 68 |the file| into th|
|00004280| 65 0d 09 23 20 69 6e 74 | 65 72 70 72 65 74 65 72 |e..# int|erpreter|
|00004290| 2c 20 61 6e 64 20 67 65 | 74 20 61 20 6c 69 73 74 |, and ge|t a list|
|000042a0| 20 6f 66 20 74 68 65 20 | 6e 65 77 20 63 6f 6d 6d | of the |new comm|
|000042b0| 61 6e 64 73 20 61 6e 64 | 20 70 61 63 6b 61 67 65 |ands and| package|
|000042c0| 73 0d 09 23 20 74 68 61 | 74 20 61 72 65 20 64 65 |s..# tha|t are de|
|000042d0| 66 69 6e 65 64 2e 20 20 | 44 65 66 69 6e 65 20 61 |fined. |Define a|
|000042e0| 6e 20 65 6d 70 74 79 20 | 22 70 61 63 6b 61 67 65 |n empty |"package|
|000042f0| 20 75 6e 6b 6e 6f 77 6e | 22 20 73 63 72 69 70 74 | unknown|" script|
|00004300| 20 73 6f 0d 09 23 20 74 | 68 61 74 20 74 68 65 72 | so..# t|hat ther|
|00004310| 65 20 61 72 65 20 6e 6f | 20 72 65 63 75 72 73 69 |e are no| recursi|
|00004320| 76 65 20 70 61 63 6b 61 | 67 65 20 69 6e 63 6c 75 |ve packa|ge inclu|
|00004330| 73 69 6f 6e 73 2e 0d 0d | 09 73 65 74 20 63 20 5b |sions...|.set c [|
|00004340| 69 6e 74 65 72 70 20 63 | 72 65 61 74 65 5d 0d 0d |interp c|reate]..|
|00004350| 09 23 20 49 66 20 54 6b | 20 69 73 20 6c 6f 61 64 |.# If Tk| is load|
|00004360| 65 64 20 69 6e 20 74 68 | 65 20 70 61 72 65 6e 74 |ed in th|e parent|
|00004370| 20 69 6e 74 65 72 70 72 | 65 74 65 72 2c 20 6c 6f | interpr|eter, lo|
|00004380| 61 64 20 69 74 20 69 6e | 74 6f 20 74 68 65 0d 09 |ad it in|to the..|
|00004390| 23 20 63 68 69 6c 64 20 | 61 6c 73 6f 2c 20 69 6e |# child |also, in|
|000043a0| 20 63 61 73 65 20 74 68 | 65 20 65 78 74 65 6e 73 | case th|e extens|
|000043b0| 69 6f 6e 20 64 65 70 65 | 6e 64 73 20 6f 6e 20 69 |ion depe|nds on i|
|000043c0| 74 2e 0d 0d 09 66 6f 72 | 65 61 63 68 20 70 6b 67 |t....for|each pkg|
|000043d0| 20 5b 69 6e 66 6f 20 6c | 6f 61 64 65 64 5d 20 7b | [info l|oaded] {|
|000043e0| 0d 09 20 20 20 20 69 66 | 20 7b 5b 6c 69 6e 64 65 |.. if| {[linde|
|000043f0| 78 20 24 70 6b 67 20 31 | 5d 20 3d 3d 20 22 54 6b |x $pkg 1|] == "Tk|
|00004400| 22 7d 20 7b 0d 09 09 24 | 63 20 65 76 61 6c 20 7b |"} {...$|c eval {|
|00004410| 73 65 74 20 61 72 67 76 | 20 7b 2d 67 65 6f 6d 65 |set argv| {-geome|
|00004420| 74 72 79 20 2b 30 2b 30 | 7d 7d 0d 09 09 6c 6f 61 |try +0+0|}}...loa|
|00004430| 64 20 5b 6c 69 6e 64 65 | 78 20 24 70 6b 67 20 30 |d [linde|x $pkg 0|
|00004440| 5d 20 54 6b 20 24 63 0d | 09 09 62 72 65 61 6b 0d |] Tk $c.|..break.|
|00004450| 09 20 20 20 20 7d 0d 09 | 7d 0d 09 24 63 20 65 76 |. }..|}..$c ev|
|00004460| 61 6c 20 5b 6c 69 73 74 | 20 73 65 74 20 66 69 6c |al [list| set fil|
|00004470| 65 20 24 66 69 6c 65 5d | 0d 09 69 66 20 5b 63 61 |e $file]|..if [ca|
|00004480| 74 63 68 20 7b 0d 09 20 | 20 20 20 24 63 20 65 76 |tch {.. | $c ev|
|00004490| 61 6c 20 7b 0d 09 09 70 | 72 6f 63 20 64 75 6d 6d |al {...p|roc dumm|
|000044a0| 79 20 61 72 67 73 20 7b | 7d 0d 09 09 72 65 6e 61 |y args {|}...rena|
|000044b0| 6d 65 20 70 61 63 6b 61 | 67 65 20 70 61 63 6b 61 |me packa|ge packa|
|000044c0| 67 65 2d 6f 72 69 67 0d | 09 09 70 72 6f 63 20 70 |ge-orig.|..proc p|
|000044d0| 61 63 6b 61 67 65 20 7b | 77 68 61 74 20 61 72 67 |ackage {|what arg|
|000044e0| 73 7d 20 7b 0d 09 09 20 | 20 20 20 73 77 69 74 63 |s} {... | switc|
|000044f0| 68 20 2d 2d 20 24 77 68 | 61 74 20 7b 0d 09 09 09 |h -- $wh|at {....|
|00004500| 72 65 71 75 69 72 65 20 | 7b 20 72 65 74 75 72 6e |require |{ return|
|00004510| 20 3b 20 23 20 69 67 6e | 6f 72 65 20 74 72 61 6e | ; # ign|ore tran|
|00004520| 73 69 74 69 76 65 20 72 | 65 71 75 69 72 65 73 20 |sitive r|equires |
|00004530| 7d 0d 09 09 09 64 65 66 | 61 75 6c 74 20 7b 20 65 |}....def|ault { e|
|00004540| 76 61 6c 20 70 61 63 6b | 61 67 65 2d 6f 72 69 67 |val pack|age-orig|
|00004550| 20 7b 24 77 68 61 74 7d | 20 24 61 72 67 73 20 7d | {$what}| $args }|
|00004560| 0d 09 09 20 20 20 20 7d | 0d 09 09 7d 0d 09 09 70 |... }|...}...p|
|00004570| 61 63 6b 61 67 65 20 75 | 6e 6b 6e 6f 77 6e 20 64 |ackage u|nknown d|
|00004580| 75 6d 6d 79 0d 09 09 73 | 65 74 20 6f 72 69 67 43 |ummy...s|et origC|
|00004590| 6d 64 73 20 5b 69 6e 66 | 6f 20 63 6f 6d 6d 61 6e |mds [inf|o comman|
|000045a0| 64 73 5d 0d 09 09 73 65 | 74 20 64 69 72 20 22 22 |ds]...se|t dir ""|
|000045b0| 09 09 3b 23 20 69 6e 20 | 63 61 73 65 20 66 69 6c |..;# in |case fil|
|000045c0| 65 20 69 73 20 70 6b 67 | 49 6e 64 65 78 2e 74 63 |e is pkg|Index.tc|
|000045d0| 6c 0d 09 09 73 65 74 20 | 70 6b 67 73 20 22 22 0d |l...set |pkgs "".|
|000045e0| 0d 09 09 23 20 54 72 79 | 20 74 6f 20 6c 6f 61 64 |...# Try| to load|
|000045f0| 20 74 68 65 20 66 69 6c | 65 20 69 66 20 69 74 20 | the fil|e if it |
|00004600| 68 61 73 20 74 68 65 20 | 73 68 61 72 65 64 20 6c |has the |shared l|
|00004610| 69 62 72 61 72 79 20 65 | 78 74 65 6e 73 69 6f 6e |ibrary e|xtension|
|00004620| 2c 0d 09 09 23 20 6f 74 | 68 65 72 77 69 73 65 20 |,...# ot|herwise |
|00004630| 73 6f 75 72 63 65 20 69 | 74 2e 20 20 49 74 27 73 |source i|t. It's|
|00004640| 20 69 6d 70 6f 72 74 61 | 6e 74 20 6e 6f 74 20 74 | importa|nt not t|
|00004650| 6f 20 74 72 79 20 74 6f | 20 6c 6f 61 64 0d 09 09 |o try to| load...|
|00004660| 23 20 66 69 6c 65 73 20 | 74 68 61 74 20 61 72 65 |# files |that are|
|00004670| 6e 27 74 20 73 68 61 72 | 65 64 20 6c 69 62 72 61 |n't shar|ed libra|
|00004680| 72 69 65 73 2c 20 62 65 | 63 61 75 73 65 20 6f 6e |ries, be|cause on|
|00004690| 20 73 6f 6d 65 20 73 79 | 73 74 65 6d 73 0d 09 09 | some sy|stems...|
|000046a0| 23 20 28 6c 69 6b 65 20 | 53 75 6e 4f 53 29 20 74 |# (like |SunOS) t|
|000046b0| 68 65 20 6c 6f 61 64 65 | 72 20 77 69 6c 6c 20 61 |he loade|r will a|
|000046c0| 62 6f 72 74 20 74 68 65 | 20 77 68 6f 6c 65 20 61 |bort the| whole a|
|000046d0| 70 70 6c 69 63 61 74 69 | 6f 6e 0d 09 09 23 20 77 |pplicati|on...# w|
|000046e0| 68 65 6e 20 69 74 20 67 | 65 74 73 20 61 6e 20 65 |hen it g|ets an e|
|000046f0| 72 72 6f 72 2e 0d 0d 09 | 09 69 66 20 7b 5b 73 74 |rror....|.if {[st|
|00004700| 72 69 6e 67 20 63 6f 6d | 70 61 72 65 20 5b 66 69 |ring com|pare [fi|
|00004710| 6c 65 20 65 78 74 65 6e | 73 69 6f 6e 20 24 66 69 |le exten|sion $fi|
|00004720| 6c 65 5d 20 5c 0d 09 09 | 09 5b 69 6e 66 6f 20 73 |le] \...|.[info s|
|00004730| 68 61 72 65 64 6c 69 62 | 65 78 74 65 6e 73 69 6f |haredlib|extensio|
|00004740| 6e 5d 5d 20 3d 3d 20 30 | 7d 20 7b 0d 0d 09 09 20 |n]] == 0|} {.... |
|00004750| 20 20 20 23 20 54 68 65 | 20 22 66 69 6c 65 20 6a | # The| "file j|
|00004760| 6f 69 6e 20 2e 22 20 63 | 6f 6d 6d 61 6e 64 20 62 |oin ." c|ommand b|
|00004770| 65 6c 6f 77 20 69 73 20 | 6e 65 63 65 73 73 61 72 |elow is |necessar|
|00004780| 79 2e 20 20 57 69 74 68 | 6f 75 74 0d 09 09 20 20 |y. With|out... |
|00004790| 20 20 23 20 69 74 2c 20 | 69 66 20 74 68 65 20 66 | # it, |if the f|
|000047a0| 69 6c 65 20 6e 61 6d 65 | 20 68 61 73 20 6e 6f 20 |ile name| has no |
|000047b0| 5c 27 73 20 61 6e 64 20 | 77 65 27 72 65 20 6f 6e |\'s and |we're on|
|000047c0| 20 55 4e 49 58 2c 20 74 | 68 65 0d 09 09 20 20 20 | UNIX, t|he... |
|000047d0| 20 23 20 6c 6f 61 64 20 | 63 6f 6d 6d 61 6e 64 20 | # load |command |
|000047e0| 77 69 6c 6c 20 69 6e 76 | 6f 6b 65 20 74 68 65 20 |will inv|oke the |
|000047f0| 4c 44 5f 4c 49 42 52 41 | 52 59 5f 50 41 54 48 20 |LD_LIBRA|RY_PATH |
|00004800| 73 65 61 72 63 68 0d 09 | 09 20 20 20 20 23 20 6d |search..|. # m|
|00004810| 65 63 68 61 6e 69 73 6d | 2c 20 77 68 69 63 68 20 |echanism|, which |
|00004820| 63 6f 75 6c 64 20 63 61 | 75 73 65 20 74 68 65 20 |could ca|use the |
|00004830| 77 72 6f 6e 67 20 66 69 | 6c 65 20 74 6f 20 62 65 |wrong fi|le to be|
|00004840| 20 75 73 65 64 2e 0d 0d | 09 09 20 20 20 20 6c 6f | used...|.. lo|
|00004850| 61 64 20 5b 66 69 6c 65 | 20 6a 6f 69 6e 20 2e 20 |ad [file| join . |
|00004860| 24 66 69 6c 65 5d 0d 09 | 09 20 20 20 20 73 65 74 |$file]..|. set|
|00004870| 20 74 79 70 65 20 6c 6f | 61 64 0d 09 09 7d 20 65 | type lo|ad...} e|
|00004880| 6c 73 65 20 7b 0d 09 09 | 20 20 20 20 73 6f 75 72 |lse {...| sour|
|00004890| 63 65 20 24 66 69 6c 65 | 0d 09 09 20 20 20 20 73 |ce $file|... s|
|000048a0| 65 74 20 74 79 70 65 20 | 73 6f 75 72 63 65 0d 09 |et type |source..|
|000048b0| 09 7d 0d 09 09 66 6f 72 | 65 61 63 68 20 6e 73 20 |.}...for|each ns |
|000048c0| 5b 6e 61 6d 65 73 70 61 | 63 65 20 63 68 69 6c 64 |[namespa|ce child|
|000048d0| 72 65 6e 5d 20 7b 0d 09 | 09 20 20 20 20 6e 61 6d |ren] {..|. nam|
|000048e0| 65 73 70 61 63 65 20 69 | 6d 70 6f 72 74 20 24 7b |espace i|mport ${|
|000048f0| 6e 73 7d 3a 3a 2a 0d 09 | 09 7d 0d 09 09 66 6f 72 |ns}::*..|.}...for|
|00004900| 65 61 63 68 20 69 20 5b | 69 6e 66 6f 20 63 6f 6d |each i [|info com|
|00004910| 6d 61 6e 64 73 5d 20 7b | 0d 09 09 20 20 20 20 73 |mands] {|... s|
|00004920| 65 74 20 63 6d 64 73 28 | 24 69 29 20 31 0d 09 09 |et cmds(|$i) 1...|
|00004930| 7d 0d 09 09 66 6f 72 65 | 61 63 68 20 69 20 24 6f |}...fore|ach i $o|
|00004940| 72 69 67 43 6d 64 73 20 | 7b 0d 09 09 20 20 20 20 |rigCmds |{... |
|00004950| 63 61 74 63 68 20 7b 75 | 6e 73 65 74 20 63 6d 64 |catch {u|nset cmd|
|00004960| 73 28 24 69 29 7d 0d 0d | 09 09 7d 0d 09 09 66 6f |s($i)}..|..}...fo|
|00004970| 72 65 61 63 68 20 69 20 | 5b 61 72 72 61 79 20 6e |reach i |[array n|
|00004980| 61 6d 65 73 20 63 6d 64 | 73 5d 20 7b 0d 09 09 20 |ames cmd|s] {... |
|00004990| 20 20 20 23 20 72 65 76 | 65 72 73 65 20 65 6e 67 | # rev|erse eng|
|000049a0| 69 6e 65 65 72 20 77 68 | 69 63 68 20 6e 61 6d 65 |ineer wh|ich name|
|000049b0| 73 70 61 63 65 20 61 20 | 63 6f 6d 6d 61 6e 64 20 |space a |command |
|000049c0| 63 6f 6d 65 73 20 66 72 | 6f 6d 0d 09 09 20 20 20 |comes fr|om... |
|000049d0| 20 73 65 74 20 61 62 73 | 6f 6c 75 74 65 20 5b 6e | set abs|olute [n|
|000049e0| 61 6d 65 73 70 61 63 65 | 20 6f 72 69 67 69 6e 20 |amespace| origin |
|000049f0| 24 69 5d 0d 09 09 20 20 | 20 20 69 66 20 7b 5b 73 |$i]... | if {[s|
|00004a00| 74 72 69 6e 67 20 63 6f | 6d 70 61 72 65 20 3a 3a |tring co|mpare ::|
|00004a10| 24 69 20 24 61 62 73 6f | 6c 75 74 65 5d 20 21 3d |$i $abso|lute] !=|
|00004a20| 20 30 7d 20 7b 0d 09 09 | 09 73 65 74 20 63 6d 64 | 0} {...|.set cmd|
|00004a30| 73 28 24 61 62 73 6f 6c | 75 74 65 29 20 31 0d 09 |s($absol|ute) 1..|
|00004a40| 09 09 75 6e 73 65 74 20 | 63 6d 64 73 28 24 69 29 |..unset |cmds($i)|
|00004a50| 0d 09 09 20 20 20 20 7d | 0d 09 09 7d 0d 09 09 66 |... }|...}...f|
|00004a60| 6f 72 65 61 63 68 20 69 | 20 5b 70 61 63 6b 61 67 |oreach i| [packag|
|00004a70| 65 20 6e 61 6d 65 73 5d | 20 7b 0d 09 09 20 20 20 |e names]| {... |
|00004a80| 20 69 66 20 7b 28 5b 73 | 74 72 69 6e 67 20 63 6f | if {([s|tring co|
|00004a90| 6d 70 61 72 65 20 5b 70 | 61 63 6b 61 67 65 20 70 |mpare [p|ackage p|
|00004aa0| 72 6f 76 69 64 65 20 24 | 69 5d 20 22 22 5d 20 21 |rovide $|i] ""] !|
|00004ab0| 3d 20 30 29 0d 09 09 09 | 20 20 20 20 26 26 20 28 |= 0)....| && (|
|00004ac0| 5b 73 74 72 69 6e 67 20 | 63 6f 6d 70 61 72 65 20 |[string |compare |
|00004ad0| 24 69 20 54 63 6c 5d 20 | 21 3d 20 30 29 0d 09 09 |$i Tcl] |!= 0)...|
|00004ae0| 09 20 20 20 20 26 26 20 | 28 5b 73 74 72 69 6e 67 |. && |([string|
|00004af0| 20 63 6f 6d 70 61 72 65 | 20 24 69 20 54 6b 5d 20 | compare| $i Tk] |
|00004b00| 21 3d 20 30 29 7d 20 7b | 0d 09 09 09 6c 61 70 70 |!= 0)} {|....lapp|
|00004b10| 65 6e 64 20 70 6b 67 73 | 20 5b 6c 69 73 74 20 24 |end pkgs| [list $|
|00004b20| 69 20 5b 70 61 63 6b 61 | 67 65 20 70 72 6f 76 69 |i [packa|ge provi|
|00004b30| 64 65 20 24 69 5d 5d 0d | 09 09 20 20 20 20 7d 0d |de $i]].|.. }.|
|00004b40| 09 09 7d 0d 09 20 20 20 | 20 7d 0d 09 7d 20 6d 73 |..}.. | }..} ms|
|00004b50| 67 5d 20 7b 0d 09 20 20 | 20 20 74 63 6c 4c 6f 67 |g] {.. | tclLog|
|00004b60| 20 22 65 72 72 6f 72 20 | 77 68 69 6c 65 20 6c 6f | "error |while lo|
|00004b70| 61 64 69 6e 67 20 6f 72 | 20 73 6f 75 72 63 69 6e |ading or| sourcin|
|00004b80| 67 20 24 66 69 6c 65 3a | 20 24 6d 73 67 22 0d 09 |g $file:| $msg"..|
|00004b90| 7d 0d 09 66 6f 72 65 61 | 63 68 20 70 6b 67 20 5b |}..forea|ch pkg [|
|00004ba0| 24 63 20 65 76 61 6c 20 | 73 65 74 20 70 6b 67 73 |$c eval |set pkgs|
|00004bb0| 5d 20 7b 0d 09 20 20 20 | 20 6c 61 70 70 65 6e 64 |] {.. | lappend|
|00004bc0| 20 66 69 6c 65 73 28 24 | 70 6b 67 29 20 5b 6c 69 | files($|pkg) [li|
|00004bd0| 73 74 20 24 66 69 6c 65 | 20 5b 24 63 20 65 76 61 |st $file| [$c eva|
|00004be0| 6c 20 73 65 74 20 74 79 | 70 65 5d 20 5c 0d 09 09 |l set ty|pe] \...|
|00004bf0| 20 20 20 20 5b 6c 73 6f | 72 74 20 5b 24 63 20 65 | [lso|rt [$c e|
|00004c00| 76 61 6c 20 61 72 72 61 | 79 20 6e 61 6d 65 73 20 |val arra|y names |
|00004c10| 63 6d 64 73 5d 5d 5d 0d | 09 7d 0d 09 69 6e 74 65 |cmds]]].|.}..inte|
|00004c20| 72 70 20 64 65 6c 65 74 | 65 20 24 63 0d 20 20 20 |rp delet|e $c. |
|00004c30| 20 7d 0d 20 20 20 20 66 | 6f 72 65 61 63 68 20 70 | }. f|oreach p|
|00004c40| 6b 67 20 5b 6c 73 6f 72 | 74 20 5b 61 72 72 61 79 |kg [lsor|t [array|
|00004c50| 20 6e 61 6d 65 73 20 66 | 69 6c 65 73 5d 5d 20 7b | names f|iles]] {|
|00004c60| 0d 09 61 70 70 65 6e 64 | 20 69 6e 64 65 78 20 22 |..append| index "|
|00004c70| 5c 6e 70 61 63 6b 61 67 | 65 20 69 66 6e 65 65 64 |\npackag|e ifneed|
|00004c80| 65 64 20 24 70 6b 67 5c | 0d 09 09 5c 5b 6c 69 73 |ed $pkg\|...\[lis|
|00004c90| 74 20 74 63 6c 50 6b 67 | 53 65 74 75 70 20 5c 24 |t tclPkg|Setup \$|
|00004ca0| 64 69 72 20 5b 6c 72 61 | 6e 67 65 20 24 70 6b 67 |dir [lra|nge $pkg|
|00004cb0| 20 30 20 30 5d 20 5b 6c | 72 61 6e 67 65 20 24 70 | 0 0] [l|range $p|
|00004cc0| 6b 67 20 31 20 31 5d 5c | 0d 09 09 5b 6c 69 73 74 |kg 1 1]\|...[list|
|00004cd0| 20 24 66 69 6c 65 73 28 | 24 70 6b 67 29 5d 5c 5d | $files(|$pkg)]\]|
|00004ce0| 22 0d 20 20 20 20 7d 0d | 20 20 20 20 73 65 74 20 |". }.| set |
|00004cf0| 66 20 5b 6f 70 65 6e 20 | 70 6b 67 49 6e 64 65 78 |f [open |pkgIndex|
|00004d00| 2e 74 63 6c 20 77 5d 0d | 20 20 20 20 70 75 74 73 |.tcl w].| puts|
|00004d10| 20 24 66 20 24 69 6e 64 | 65 78 0d 20 20 20 20 63 | $f $ind|ex. c|
|00004d20| 6c 6f 73 65 20 24 66 0d | 20 20 20 20 63 64 20 24 |lose $f.| cd $|
|00004d30| 6f 6c 64 44 69 72 0d 7d | 0d 0d 23 20 74 63 6c 50 |oldDir.}|..# tclP|
|00004d40| 6b 67 53 65 74 75 70 20 | 2d 2d 0d 23 20 54 68 69 |kgSetup |--.# Thi|
|00004d50| 73 20 69 73 20 61 20 75 | 74 69 6c 69 74 79 20 70 |s is a u|tility p|
|00004d60| 72 6f 63 65 64 75 72 65 | 20 75 73 65 20 62 79 20 |rocedure| use by |
|00004d70| 70 6b 67 49 6e 64 65 78 | 2e 74 63 6c 20 66 69 6c |pkgIndex|.tcl fil|
|00004d80| 65 73 2e 20 20 49 74 20 | 69 73 20 69 6e 76 6f 6b |es. It |is invok|
|00004d90| 65 64 0d 23 20 61 73 20 | 70 61 72 74 20 6f 66 20 |ed.# as |part of |
|00004da0| 61 20 22 70 61 63 6b 61 | 67 65 20 69 66 6e 65 65 |a "packa|ge ifnee|
|00004db0| 64 65 64 22 20 73 63 72 | 69 70 74 2e 20 20 49 74 |ded" scr|ipt. It|
|00004dc0| 20 63 61 6c 6c 73 20 22 | 70 61 63 6b 61 67 65 20 | calls "|package |
|00004dd0| 70 72 6f 76 69 64 65 22 | 0d 23 20 74 6f 20 69 6e |provide"|.# to in|
|00004de0| 64 69 63 61 74 65 20 74 | 68 61 74 20 61 20 70 61 |dicate t|hat a pa|
|00004df0| 63 6b 61 67 65 20 69 73 | 20 61 76 61 69 6c 61 62 |ckage is| availab|
|00004e00| 6c 65 2c 20 74 68 65 6e | 20 73 65 74 73 20 65 6e |le, then| sets en|
|00004e10| 74 72 69 65 73 20 69 6e | 20 74 68 65 0d 23 20 61 |tries in| the.# a|
|00004e20| 75 74 6f 5f 69 6e 64 65 | 78 20 61 72 72 61 79 20 |uto_inde|x array |
|00004e30| 73 6f 20 74 68 61 74 20 | 74 68 65 20 70 61 63 6b |so that |the pack|
|00004e40| 61 67 65 27 73 20 66 69 | 6c 65 73 20 77 69 6c 6c |age's fi|les will|
|00004e50| 20 62 65 20 61 75 74 6f | 2d 6c 6f 61 64 65 64 20 | be auto|-loaded |
|00004e60| 77 68 65 6e 0d 23 20 74 | 68 65 20 63 6f 6d 6d 61 |when.# t|he comma|
|00004e70| 6e 64 73 20 61 72 65 20 | 75 73 65 64 2e 0d 23 0d |nds are |used..#.|
|00004e80| 23 20 41 72 67 75 6d 65 | 6e 74 73 3a 0d 23 20 64 |# Argume|nts:.# d|
|00004e90| 69 72 20 2d 09 09 09 44 | 69 72 65 63 74 6f 72 79 |ir -...D|irectory|
|00004ea0| 20 63 6f 6e 74 61 69 6e | 69 6e 67 20 61 6c 6c 20 | contain|ing all |
|00004eb0| 74 68 65 20 66 69 6c 65 | 73 20 66 6f 72 20 74 68 |the file|s for th|
|00004ec0| 69 73 20 70 61 63 6b 61 | 67 65 2e 0d 23 20 70 6b |is packa|ge..# pk|
|00004ed0| 67 20 2d 09 09 09 4e 61 | 6d 65 20 6f 66 20 74 68 |g -...Na|me of th|
|00004ee0| 65 20 70 61 63 6b 61 67 | 65 20 28 6e 6f 20 76 65 |e packag|e (no ve|
|00004ef0| 72 73 69 6f 6e 20 6e 75 | 6d 62 65 72 29 2e 0d 23 |rsion nu|mber)..#|
|00004f00| 20 76 65 72 73 69 6f 6e | 20 2d 09 09 56 65 72 73 | version| -..Vers|
|00004f10| 69 6f 6e 20 6e 75 6d 62 | 65 72 20 66 6f 72 20 74 |ion numb|er for t|
|00004f20| 68 65 20 70 61 63 6b 61 | 67 65 2c 20 73 75 63 68 |he packa|ge, such|
|00004f30| 20 61 73 20 32 2e 31 2e | 33 2e 0d 23 20 66 69 6c | as 2.1.|3..# fil|
|00004f40| 65 73 20 2d 09 09 4c 69 | 73 74 20 6f 66 20 66 69 |es -..Li|st of fi|
|00004f50| 6c 65 73 20 74 68 61 74 | 20 63 6f 6e 73 74 69 74 |les that| constit|
|00004f60| 75 74 65 20 74 68 65 20 | 70 61 63 6b 61 67 65 2e |ute the |package.|
|00004f70| 20 20 45 61 63 68 0d 23 | 09 09 09 65 6c 65 6d 65 | Each.#|...eleme|
|00004f80| 6e 74 20 69 73 20 61 20 | 73 75 62 2d 6c 69 73 74 |nt is a |sub-list|
|00004f90| 20 77 69 74 68 20 74 68 | 72 65 65 20 65 6c 65 6d | with th|ree elem|
|00004fa0| 65 6e 74 73 2e 20 20 54 | 68 65 20 66 69 72 73 74 |ents. T|he first|
|00004fb0| 0d 23 09 09 09 69 73 20 | 74 68 65 20 6e 61 6d 65 |.#...is |the name|
|00004fc0| 20 6f 66 20 61 20 66 69 | 6c 65 20 72 65 6c 61 74 | of a fi|le relat|
|00004fd0| 69 76 65 20 74 6f 20 24 | 64 69 72 2c 20 74 68 65 |ive to $|dir, the|
|00004fe0| 20 73 65 63 6f 6e 64 20 | 69 73 0d 23 09 09 09 22 | second |is.#..."|
|00004ff0| 6c 6f 61 64 22 20 6f 72 | 20 22 73 6f 75 72 63 65 |load" or| "source|
|00005000| 22 2c 20 69 6e 64 69 63 | 61 74 69 6e 67 20 77 68 |", indic|ating wh|
|00005010| 65 74 68 65 72 20 74 68 | 65 20 66 69 6c 65 20 69 |ether th|e file i|
|00005020| 73 20 61 0d 23 09 09 09 | 6c 6f 61 64 61 62 6c 65 |s a.#...|loadable|
|00005030| 20 62 69 6e 61 72 79 20 | 6f 72 20 61 20 73 63 72 | binary |or a scr|
|00005040| 69 70 74 20 74 6f 20 73 | 6f 75 72 63 65 2c 20 61 |ipt to s|ource, a|
|00005050| 6e 64 20 74 68 65 20 74 | 68 69 72 64 0d 23 09 09 |nd the t|hird.#..|
|00005060| 09 69 73 20 61 20 6c 69 | 73 74 20 6f 66 20 63 6f |.is a li|st of co|
|00005070| 6d 6d 61 6e 64 73 20 64 | 65 66 69 6e 65 64 20 62 |mmands d|efined b|
|00005080| 79 20 74 68 69 73 20 66 | 69 6c 65 2e 0d 0d 70 72 |y this f|ile...pr|
|00005090| 6f 63 20 74 63 6c 50 6b | 67 53 65 74 75 70 20 7b |oc tclPk|gSetup {|
|000050a0| 64 69 72 20 70 6b 67 20 | 76 65 72 73 69 6f 6e 20 |dir pkg |version |
|000050b0| 66 69 6c 65 73 7d 20 7b | 0d 20 20 20 20 67 6c 6f |files} {|. glo|
|000050c0| 62 61 6c 20 61 75 74 6f | 5f 69 6e 64 65 78 0d 0d |bal auto|_index..|
|000050d0| 20 20 20 20 70 61 63 6b | 61 67 65 20 70 72 6f 76 | pack|age prov|
|000050e0| 69 64 65 20 24 70 6b 67 | 20 24 76 65 72 73 69 6f |ide $pkg| $versio|
|000050f0| 6e 0d 20 20 20 20 66 6f | 72 65 61 63 68 20 66 69 |n. fo|reach fi|
|00005100| 6c 65 49 6e 66 6f 20 24 | 66 69 6c 65 73 20 7b 0d |leInfo $|files {.|
|00005110| 09 73 65 74 20 66 20 5b | 6c 69 6e 64 65 78 20 24 |.set f [|lindex $|
|00005120| 66 69 6c 65 49 6e 66 6f | 20 30 5d 0d 09 73 65 74 |fileInfo| 0]..set|
|00005130| 20 74 79 70 65 20 5b 6c | 69 6e 64 65 78 20 24 66 | type [l|index $f|
|00005140| 69 6c 65 49 6e 66 6f 20 | 31 5d 0d 09 66 6f 72 65 |ileInfo |1]..fore|
|00005150| 61 63 68 20 63 6d 64 20 | 5b 6c 69 6e 64 65 78 20 |ach cmd |[lindex |
|00005160| 24 66 69 6c 65 49 6e 66 | 6f 20 32 5d 20 7b 0d 09 |$fileInf|o 2] {..|
|00005170| 20 20 20 20 69 66 20 7b | 24 74 79 70 65 20 3d 3d | if {|$type ==|
|00005180| 20 22 6c 6f 61 64 22 7d | 20 7b 0d 09 09 73 65 74 | "load"}| {...set|
|00005190| 20 61 75 74 6f 5f 69 6e | 64 65 78 28 24 63 6d 64 | auto_in|dex($cmd|
|000051a0| 29 20 5b 6c 69 73 74 20 | 6c 6f 61 64 20 5b 66 69 |) [list |load [fi|
|000051b0| 6c 65 20 6a 6f 69 6e 20 | 24 64 69 72 20 24 66 5d |le join |$dir $f]|
|000051c0| 20 24 70 6b 67 5d 0d 09 | 20 20 20 20 7d 20 65 6c | $pkg]..| } el|
|000051d0| 73 65 20 7b 0d 09 09 73 | 65 74 20 61 75 74 6f 5f |se {...s|et auto_|
|000051e0| 69 6e 64 65 78 28 24 63 | 6d 64 29 20 5b 6c 69 73 |index($c|md) [lis|
|000051f0| 74 20 73 6f 75 72 63 65 | 20 5b 66 69 6c 65 20 6a |t source| [file j|
|00005200| 6f 69 6e 20 24 64 69 72 | 20 24 66 5d 5d 0d 09 20 |oin $dir| $f]].. |
|00005210| 20 20 20 7d 20 0d 09 7d | 0d 20 20 20 20 7d 0d 7d | } ..}|. }.}|
|00005220| 0d 0d 23 20 74 63 6c 4d | 61 63 50 6b 67 53 65 61 |..# tclM|acPkgSea|
|00005230| 72 63 68 20 2d 2d 0d 23 | 20 54 68 65 20 70 72 6f |rch --.#| The pro|
|00005240| 63 65 64 75 72 65 20 69 | 73 20 75 73 65 64 20 6f |cedure i|s used o|
|00005250| 6e 20 74 68 65 20 4d 61 | 63 69 6e 74 6f 73 68 20 |n the Ma|cintosh |
|00005260| 74 6f 20 73 65 61 72 63 | 68 20 61 20 67 69 76 65 |to searc|h a give|
|00005270| 6e 20 64 69 72 65 63 74 | 6f 72 79 20 66 6f 72 20 |n direct|ory for |
|00005280| 66 69 6c 65 73 0d 23 20 | 77 69 74 68 20 61 20 54 |files.# |with a T|
|00005290| 45 58 54 20 72 65 73 6f | 75 72 63 65 20 6e 61 6d |EXT reso|urce nam|
|000052a0| 65 64 20 22 70 6b 67 49 | 6e 64 65 78 22 2e 20 20 |ed "pkgI|ndex". |
|000052b0| 49 66 20 69 74 20 65 78 | 69 73 74 73 20 69 74 20 |If it ex|ists it |
|000052c0| 69 73 20 73 6f 75 72 63 | 65 64 20 69 6e 20 74 6f |is sourc|ed in to|
|000052d0| 20 74 68 65 0d 23 20 69 | 6e 74 65 72 70 72 65 74 | the.# i|nterpret|
|000052e0| 65 72 20 74 6f 20 73 65 | 74 75 70 20 74 68 65 20 |er to se|tup the |
|000052f0| 70 61 63 6b 61 67 65 20 | 64 61 74 61 62 61 73 65 |package |database|
|00005300| 2e 0d 0d 70 72 6f 63 20 | 74 63 6c 4d 61 63 50 6b |...proc |tclMacPk|
|00005310| 67 53 65 61 72 63 68 20 | 7b 64 69 72 7d 20 7b 0d |gSearch |{dir} {.|
|00005320| 20 20 20 20 66 6f 72 65 | 61 63 68 20 78 20 5b 67 | fore|ach x [g|
|00005330| 6c 6f 62 20 2d 6e 6f 63 | 6f 6d 70 6c 61 69 6e 20 |lob -noc|omplain |
|00005340| 5b 66 69 6c 65 20 6a 6f | 69 6e 20 24 64 69 72 20 |[file jo|in $dir |
|00005350| 2a 2e 73 68 6c 62 5d 5d | 20 7b 0d 09 69 66 20 5b |*.shlb]]| {..if [|
|00005360| 66 69 6c 65 20 69 73 66 | 69 6c 65 20 24 78 5d 20 |file isf|ile $x] |
|00005370| 7b 0d 09 20 20 20 20 73 | 65 74 20 72 65 73 20 5b |{.. s|et res [|
|00005380| 72 65 73 6f 75 72 63 65 | 20 6f 70 65 6e 20 24 78 |resource| open $x|
|00005390| 5d 0d 09 20 20 20 20 66 | 6f 72 65 61 63 68 20 79 |].. f|oreach y|
|000053a0| 20 5b 72 65 73 6f 75 72 | 63 65 20 6c 69 73 74 20 | [resour|ce list |
|000053b0| 54 45 58 54 20 24 72 65 | 73 5d 20 7b 0d 09 09 69 |TEXT $re|s] {...i|
|000053c0| 66 20 7b 24 79 20 3d 3d | 20 22 70 6b 67 49 6e 64 |f {$y ==| "pkgInd|
|000053d0| 65 78 22 7d 20 7b 73 6f | 75 72 63 65 20 2d 72 73 |ex"} {so|urce -rs|
|000053e0| 72 63 20 70 6b 67 49 6e | 64 65 78 7d 0d 09 20 20 |rc pkgIn|dex}.. |
|000053f0| 20 20 7d 0d 09 20 20 20 | 20 72 65 73 6f 75 72 63 | }.. | resourc|
|00005400| 65 20 63 6c 6f 73 65 20 | 24 72 65 73 0d 09 7d 0d |e close |$res..}.|
|00005410| 20 20 20 20 7d 0d 7d 0d | 0d 23 20 74 63 6c 50 6b | }.}.|.# tclPk|
|00005420| 67 55 6e 6b 6e 6f 77 6e | 20 2d 2d 0d 23 20 54 68 |gUnknown| --.# Th|
|00005430| 69 73 20 70 72 6f 63 65 | 64 75 72 65 20 70 72 6f |is proce|dure pro|
|00005440| 76 69 64 65 73 20 74 68 | 65 20 64 65 66 61 75 6c |vides th|e defaul|
|00005450| 74 20 66 6f 72 20 74 68 | 65 20 22 70 61 63 6b 61 |t for th|e "packa|
|00005460| 67 65 20 75 6e 6b 6e 6f | 77 6e 22 20 66 75 6e 63 |ge unkno|wn" func|
|00005470| 74 69 6f 6e 2e 0d 23 20 | 49 74 20 69 73 20 69 6e |tion..# |It is in|
|00005480| 76 6f 6b 65 64 20 77 68 | 65 6e 20 61 20 70 61 63 |voked wh|en a pac|
|00005490| 6b 61 67 65 20 74 68 61 | 74 27 73 20 6e 65 65 64 |kage tha|t's need|
|000054a0| 65 64 20 63 61 6e 27 74 | 20 62 65 20 66 6f 75 6e |ed can't| be foun|
|000054b0| 64 2e 20 20 49 74 20 73 | 63 61 6e 73 0d 23 20 74 |d. It s|cans.# t|
|000054c0| 68 65 20 61 75 74 6f 5f | 70 61 74 68 20 64 69 72 |he auto_|path dir|
|000054d0| 65 63 74 6f 72 69 65 73 | 20 61 6e 64 20 74 68 65 |ectories| and the|
|000054e0| 69 72 20 69 6d 6d 65 64 | 69 61 74 65 20 63 68 69 |ir immed|iate chi|
|000054f0| 6c 64 72 65 6e 20 6c 6f | 6f 6b 69 6e 67 20 66 6f |ldren lo|oking fo|
|00005500| 72 0d 23 20 70 6b 67 49 | 6e 64 65 78 2e 74 63 6c |r.# pkgI|ndex.tcl|
|00005510| 20 66 69 6c 65 73 20 61 | 6e 64 20 73 6f 75 72 63 | files a|nd sourc|
|00005520| 65 73 20 61 6e 79 20 73 | 75 63 68 20 66 69 6c 65 |es any s|uch file|
|00005530| 73 20 74 68 61 74 20 61 | 72 65 20 66 6f 75 6e 64 |s that a|re found|
|00005540| 20 74 6f 20 73 65 74 75 | 70 0d 23 20 74 68 65 20 | to setu|p.# the |
|00005550| 70 61 63 6b 61 67 65 20 | 64 61 74 61 62 61 73 65 |package |database|
|00005560| 2e 20 20 28 4f 6e 20 74 | 68 65 20 4d 61 63 69 6e |. (On t|he Macin|
|00005570| 74 6f 73 68 20 77 65 20 | 61 6c 73 6f 20 73 65 61 |tosh we |also sea|
|00005580| 72 63 68 20 66 6f 72 20 | 70 6b 67 49 6e 64 65 78 |rch for |pkgIndex|
|00005590| 0d 23 20 54 45 58 54 20 | 72 65 73 6f 75 72 63 65 |.# TEXT |resource|
|000055a0| 73 20 69 6e 20 61 6c 6c | 20 66 69 6c 65 73 2e 29 |s in all| files.)|
|000055b0| 0d 23 0d 23 20 41 72 67 | 75 6d 65 6e 74 73 3a 0d |.#.# Arg|uments:.|
|000055c0| 23 20 6e 61 6d 65 20 2d | 09 09 4e 61 6d 65 20 6f |# name -|..Name o|
|000055d0| 66 20 64 65 73 69 72 65 | 64 20 70 61 63 6b 61 67 |f desire|d packag|
|000055e0| 65 2e 20 20 4e 6f 74 20 | 75 73 65 64 2e 0d 23 20 |e. Not |used..# |
|000055f0| 76 65 72 73 69 6f 6e 20 | 2d 09 09 56 65 72 73 69 |version |-..Versi|
|00005600| 6f 6e 20 6f 66 20 64 65 | 73 69 72 65 64 20 70 61 |on of de|sired pa|
|00005610| 63 6b 61 67 65 2e 20 20 | 4e 6f 74 20 75 73 65 64 |ckage. |Not used|
|00005620| 2e 0d 23 20 65 78 61 63 | 74 20 2d 09 09 45 69 74 |..# exac|t -..Eit|
|00005630| 68 65 72 20 22 2d 65 78 | 61 63 74 22 20 6f 72 20 |her "-ex|act" or |
|00005640| 6f 6d 69 74 74 65 64 2e | 20 20 4e 6f 74 20 75 73 |omitted.| Not us|
|00005650| 65 64 2e 0d 0d 70 72 6f | 63 20 74 63 6c 50 6b 67 |ed...pro|c tclPkg|
|00005660| 55 6e 6b 6e 6f 77 6e 20 | 7b 6e 61 6d 65 20 76 65 |Unknown |{name ve|
|00005670| 72 73 69 6f 6e 20 7b 65 | 78 61 63 74 20 7b 7d 7d |rsion {e|xact {}}|
|00005680| 7d 20 7b 0d 20 20 20 20 | 67 6c 6f 62 61 6c 20 61 |} {. |global a|
|00005690| 75 74 6f 5f 70 61 74 68 | 20 74 63 6c 5f 70 6c 61 |uto_path| tcl_pla|
|000056a0| 74 66 6f 72 6d 20 65 6e | 76 20 64 69 72 0d 0d 20 |tform en|v dir.. |
|000056b0| 20 20 20 69 66 20 21 5b | 69 6e 66 6f 20 65 78 69 | if ![|info exi|
|000056c0| 73 74 73 20 61 75 74 6f | 5f 70 61 74 68 5d 20 7b |sts auto|_path] {|
|000056d0| 0d 09 72 65 74 75 72 6e | 0d 20 20 20 20 7d 0d 20 |..return|. }. |
|000056e0| 20 20 20 69 66 20 7b 5b | 69 6e 66 6f 20 65 78 69 | if {[|info exi|
|000056f0| 73 74 73 20 64 69 72 5d | 7d 20 7b 0d 09 73 65 74 |sts dir]|} {..set|
|00005700| 20 73 61 76 65 5f 64 69 | 72 20 24 64 69 72 0d 20 | save_di|r $dir. |
|00005710| 20 20 20 7d 0d 20 20 20 | 20 66 6f 72 20 7b 73 65 | }. | for {se|
|00005720| 74 20 69 20 5b 65 78 70 | 72 20 5b 6c 6c 65 6e 67 |t i [exp|r [lleng|
|00005730| 74 68 20 24 61 75 74 6f | 5f 70 61 74 68 5d 20 2d |th $auto|_path] -|
|00005740| 20 31 5d 7d 20 7b 24 69 | 20 3e 3d 20 30 7d 20 7b | 1]} {$i| >= 0} {|
|00005750| 69 6e 63 72 20 69 20 2d | 31 7d 20 7b 0d 09 23 20 |incr i -|1} {..# |
|00005760| 77 65 20 63 61 6e 27 74 | 20 75 73 65 20 67 6c 6f |we can't| use glo|
|00005770| 62 20 69 6e 20 73 61 66 | 65 20 69 6e 74 65 72 70 |b in saf|e interp|
|00005780| 73 2c 20 73 6f 20 65 6e | 63 6c 6f 73 65 20 74 68 |s, so en|close th|
|00005790| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 0d 09 23 20 69 |e follow|ing..# i|
|000057a0| 6e 20 61 20 63 61 74 63 | 68 20 73 74 61 74 65 6d |n a catc|h statem|
|000057b0| 65 6e 74 0d 09 63 61 74 | 63 68 20 7b 0d 09 20 20 |ent..cat|ch {.. |
|000057c0| 20 20 66 6f 72 65 61 63 | 68 20 66 69 6c 65 20 5b | foreac|h file [|
|000057d0| 67 6c 6f 62 20 2d 6e 6f | 63 6f 6d 70 6c 61 69 6e |glob -no|complain|
|000057e0| 20 5b 66 69 6c 65 20 6a | 6f 69 6e 20 5b 6c 69 6e | [file j|oin [lin|
|000057f0| 64 65 78 20 24 61 75 74 | 6f 5f 70 61 74 68 20 24 |dex $aut|o_path $|
|00005800| 69 5d 20 5c 0d 09 09 20 | 20 20 20 2a 20 70 6b 67 |i] \... | * pkg|
|00005810| 49 6e 64 65 78 2e 74 63 | 6c 5d 5d 20 7b 0d 09 09 |Index.tc|l]] {...|
|00005820| 73 65 74 20 64 69 72 20 | 5b 66 69 6c 65 20 64 69 |set dir |[file di|
|00005830| 72 6e 61 6d 65 20 24 66 | 69 6c 65 5d 0d 09 09 69 |rname $f|ile]...i|
|00005840| 66 20 5b 63 61 74 63 68 | 20 7b 73 6f 75 72 63 65 |f [catch| {source|
|00005850| 20 24 66 69 6c 65 7d 20 | 6d 73 67 5d 20 7b 0d 09 | $file} |msg] {..|
|00005860| 09 20 20 20 20 74 63 6c | 4c 6f 67 20 22 65 72 72 |. tcl|Log "err|
|00005870| 6f 72 20 72 65 61 64 69 | 6e 67 20 70 61 63 6b 61 |or readi|ng packa|
|00005880| 67 65 20 69 6e 64 65 78 | 20 66 69 6c 65 20 24 66 |ge index| file $f|
|00005890| 69 6c 65 3a 20 24 6d 73 | 67 22 0d 09 09 7d 0d 09 |ile: $ms|g"...}..|
|000058a0| 20 20 20 20 7d 0d 20 20 | 20 20 20 20 20 20 7d 0d | }. | }.|
|000058b0| 09 73 65 74 20 64 69 72 | 20 5b 6c 69 6e 64 65 78 |.set dir| [lindex|
|000058c0| 20 24 61 75 74 6f 5f 70 | 61 74 68 20 24 69 5d 0d | $auto_p|ath $i].|
|000058d0| 09 73 65 74 20 66 69 6c | 65 20 5b 66 69 6c 65 20 |.set fil|e [file |
|000058e0| 6a 6f 69 6e 20 24 64 69 | 72 20 70 6b 67 49 6e 64 |join $di|r pkgInd|
|000058f0| 65 78 2e 74 63 6c 5d 0d | 09 23 20 73 61 66 65 20 |ex.tcl].|.# safe |
|00005900| 69 6e 74 65 72 70 73 20 | 75 73 75 61 6c 6c 79 20 |interps |usually |
|00005910| 64 6f 6e 27 74 20 68 61 | 76 65 20 22 66 69 6c 65 |don't ha|ve "file|
|00005920| 20 72 65 61 64 61 62 6c | 65 22 2c 20 6e 6f 72 20 | readabl|e", nor |
|00005930| 73 74 64 65 72 72 20 63 | 68 61 6e 6e 65 6c 0d 09 |stderr c|hannel..|
|00005940| 69 66 20 7b 5b 69 6e 74 | 65 72 70 20 69 73 73 61 |if {[int|erp issa|
|00005950| 66 65 5d 20 7c 7c 20 5b | 66 69 6c 65 20 72 65 61 |fe] || [|file rea|
|00005960| 64 61 62 6c 65 20 24 66 | 69 6c 65 5d 7d 20 7b 0d |dable $f|ile]} {.|
|00005970| 09 20 20 20 20 69 66 20 | 7b 5b 63 61 74 63 68 20 |. if |{[catch |
|00005980| 7b 73 6f 75 72 63 65 20 | 24 66 69 6c 65 7d 20 6d |{source |$file} m|
|00005990| 73 67 5d 20 26 26 20 21 | 5b 69 6e 74 65 72 70 20 |sg] && !|[interp |
|000059a0| 69 73 73 61 66 65 5d 7d | 20 20 7b 0d 09 09 74 63 |issafe]}| {...tc|
|000059b0| 6c 4c 6f 67 20 22 65 72 | 72 6f 72 20 72 65 61 64 |lLog "er|ror read|
|000059c0| 69 6e 67 20 70 61 63 6b | 61 67 65 20 69 6e 64 65 |ing pack|age inde|
|000059d0| 78 20 66 69 6c 65 20 24 | 66 69 6c 65 3a 20 24 6d |x file $|file: $m|
|000059e0| 73 67 22 0d 09 20 20 20 | 20 7d 0d 09 7d 0d 09 23 |sg".. | }..}..#|
|000059f0| 20 4f 6e 20 74 68 65 20 | 4d 61 63 69 6e 74 6f 73 | On the |Macintos|
|00005a00| 68 20 77 65 20 61 6c 73 | 6f 20 6c 6f 6f 6b 20 69 |h we als|o look i|
|00005a10| 6e 20 74 68 65 20 72 65 | 73 6f 75 72 63 65 20 66 |n the re|source f|
|00005a20| 6f 72 6b 20 0d 09 23 20 | 6f 66 20 73 68 61 72 65 |ork ..# |of share|
|00005a30| 64 20 6c 69 62 72 61 72 | 69 65 73 0d 09 23 20 57 |d librar|ies..# W|
|00005a40| 65 20 63 61 6e 27 74 20 | 75 73 65 20 74 63 6c 4d |e can't |use tclM|
|00005a50| 61 63 50 6b 67 53 65 61 | 72 63 68 20 69 6e 20 73 |acPkgSea|rch in s|
|00005a60| 61 66 65 20 69 6e 74 65 | 72 70 73 20 62 65 63 61 |afe inte|rps beca|
|00005a70| 75 73 65 20 69 74 20 75 | 73 65 73 20 67 6c 6f 62 |use it u|ses glob|
|00005a80| 0d 09 69 66 20 7b 28 21 | 5b 69 6e 74 65 72 70 20 |..if {(!|[interp |
|00005a90| 69 73 73 61 66 65 5d 29 | 20 26 26 20 28 24 74 63 |issafe])| && ($tc|
|00005aa0| 6c 5f 70 6c 61 74 66 6f | 72 6d 28 70 6c 61 74 66 |l_platfo|rm(platf|
|00005ab0| 6f 72 6d 29 20 3d 3d 20 | 22 6d 61 63 69 6e 74 6f |orm) == |"macinto|
|00005ac0| 73 68 22 29 7d 20 7b 0d | 09 20 20 20 20 73 65 74 |sh")} {.|. set|
|00005ad0| 20 64 69 72 20 5b 6c 69 | 6e 64 65 78 20 24 61 75 | dir [li|ndex $au|
|00005ae0| 74 6f 5f 70 61 74 68 20 | 24 69 5d 0d 09 20 20 20 |to_path |$i].. |
|00005af0| 20 74 63 6c 4d 61 63 50 | 6b 67 53 65 61 72 63 68 | tclMacP|kgSearch|
|00005b00| 20 24 64 69 72 0d 09 09 | 66 6f 72 65 61 63 68 20 | $dir...|foreach |
|00005b10| 78 20 5b 67 6c 6f 62 20 | 2d 6e 6f 63 6f 6d 70 6c |x [glob |-nocompl|
|00005b20| 61 69 6e 20 5b 66 69 6c | 65 20 6a 6f 69 6e 20 24 |ain [fil|e join $|
|00005b30| 64 69 72 20 2a 5d 5d 20 | 7b 0d 09 09 20 20 20 20 |dir *]] |{... |
|00005b40| 69 66 20 5b 66 69 6c 65 | 20 69 73 64 69 72 65 63 |if [file| isdirec|
|00005b50| 74 6f 72 79 20 24 78 5d | 20 7b 0d 09 09 09 73 65 |tory $x]| {....se|
|00005b60| 74 20 64 69 72 20 24 78 | 0d 09 09 09 74 63 6c 4d |t dir $x|....tclM|
|00005b70| 61 63 50 6b 67 53 65 61 | 72 63 68 20 24 64 69 72 |acPkgSea|rch $dir|
|00005b80| 0d 09 09 20 20 20 20 7d | 0d 09 09 7d 0d 09 7d 0d |... }|...}..}.|
|00005b90| 20 20 20 20 7d 0d 20 20 | 20 20 69 66 20 7b 5b 69 | }. | if {[i|
|00005ba0| 6e 66 6f 20 65 78 69 73 | 74 73 20 73 61 76 65 5f |nfo exis|ts save_|
|00005bb0| 64 69 72 5d 7d 20 7b 0d | 09 73 65 74 20 64 69 72 |dir]} {.|.set dir|
|00005bc0| 20 24 73 61 76 65 5f 64 | 69 72 0d 20 20 20 20 7d | $save_d|ir. }|
|00005bd0| 20 65 6c 73 65 20 7b 0d | 09 75 6e 73 65 74 20 64 | else {.|.unset d|
|00005be0| 69 72 0d 20 20 20 20 7d | 0d 7d 0d 00 00 22 f3 23 |ir. }|.}...".#|
|00005bf0| 20 68 69 73 74 6f 72 79 | 2e 74 63 6c 20 2d 2d 0d | history|.tcl --.|
|00005c00| 23 0d 23 20 49 6d 70 6c | 65 6d 65 6e 74 61 74 69 |#.# Impl|ementati|
|00005c10| 6f 6e 20 6f 66 20 74 68 | 65 20 68 69 73 74 6f 72 |on of th|e histor|
|00005c20| 79 20 63 6f 6d 6d 61 6e | 64 2e 0d 23 0d 23 20 53 |y comman|d..#.# S|
|00005c30| 43 43 53 3a 20 40 28 23 | 29 20 68 69 73 74 6f 72 |CCS: @(#|) histor|
|00005c40| 79 2e 74 63 6c 20 31 2e | 37 20 39 37 2f 30 38 2f |y.tcl 1.|7 97/08/|
|00005c50| 30 37 20 31 36 3a 34 35 | 3a 35 30 0d 23 0d 23 20 |07 16:45|:50.#.# |
|00005c60| 43 6f 70 79 72 69 67 68 | 74 20 28 63 29 20 31 39 |Copyrigh|t (c) 19|
|00005c70| 39 37 20 53 75 6e 20 4d | 69 63 72 6f 73 79 73 74 |97 Sun M|icrosyst|
|00005c80| 65 6d 73 2c 20 49 6e 63 | 2e 0d 23 0d 23 20 53 65 |ems, Inc|..#.# Se|
|00005c90| 65 20 74 68 65 20 66 69 | 6c 65 20 22 6c 69 63 65 |e the fi|le "lice|
|00005ca0| 6e 73 65 2e 74 65 72 6d | 73 22 20 66 6f 72 20 69 |nse.term|s" for i|
|00005cb0| 6e 66 6f 72 6d 61 74 69 | 6f 6e 20 6f 6e 20 75 73 |nformati|on on us|
|00005cc0| 61 67 65 20 61 6e 64 20 | 72 65 64 69 73 74 72 69 |age and |redistri|
|00005cd0| 62 75 74 69 6f 6e 0d 23 | 20 6f 66 20 74 68 69 73 |bution.#| of this|
|00005ce0| 20 66 69 6c 65 2c 20 61 | 6e 64 20 66 6f 72 20 61 | file, a|nd for a|
|00005cf0| 20 44 49 53 43 4c 41 49 | 4d 45 52 20 4f 46 20 41 | DISCLAI|MER OF A|
|00005d00| 4c 4c 20 57 41 52 52 41 | 4e 54 49 45 53 2e 0d 23 |LL WARRA|NTIES..#|
|00005d10| 0d 0d 23 20 54 68 65 20 | 74 63 6c 3a 3a 68 69 73 |..# The |tcl::his|
|00005d20| 74 6f 72 79 20 61 72 72 | 61 79 20 68 6f 6c 64 73 |tory arr|ay holds|
|00005d30| 20 74 68 65 20 68 69 73 | 74 6f 72 79 20 6c 69 73 | the his|tory lis|
|00005d40| 74 20 61 6e 64 0d 23 20 | 73 6f 6d 65 20 61 64 64 |t and.# |some add|
|00005d50| 69 74 69 6f 6e 61 6c 20 | 62 6f 6f 6b 6b 65 65 70 |itional |bookkeep|
|00005d60| 69 6e 67 20 76 61 72 69 | 61 62 6c 65 73 2e 0d 23 |ing vari|ables..#|
|00005d70| 0d 23 20 6e 65 78 74 69 | 64 09 74 68 65 20 69 6e |.# nexti|d.the in|
|00005d80| 64 65 78 20 75 73 65 64 | 20 66 6f 72 20 74 68 65 |dex used| for the|
|00005d90| 20 6e 65 78 74 20 68 69 | 73 74 6f 72 79 20 6c 69 | next hi|story li|
|00005da0| 73 74 20 69 74 65 6d 2e | 0d 23 20 6b 65 65 70 09 |st item.|.# keep.|
|00005db0| 09 74 68 65 20 6d 61 78 | 20 73 69 7a 65 20 6f 66 |.the max| size of|
|00005dc0| 20 74 68 65 20 68 69 73 | 74 6f 72 79 20 6c 69 73 | the his|tory lis|
|00005dd0| 74 0d 23 20 6f 6c 64 65 | 73 74 09 74 68 65 20 69 |t.# olde|st.the i|
|00005de0| 6e 64 65 78 20 6f 66 20 | 74 68 65 20 6f 6c 64 65 |ndex of |the olde|
|00005df0| 73 74 20 69 74 65 6d 20 | 69 6e 20 74 68 65 20 68 |st item |in the h|
|00005e00| 69 73 74 6f 72 79 2e 0d | 0d 6e 61 6d 65 73 70 61 |istory..|.namespa|
|00005e10| 63 65 20 65 76 61 6c 20 | 74 63 6c 20 7b 0d 20 20 |ce eval |tcl {. |
|00005e20| 20 20 76 61 72 69 61 62 | 6c 65 20 68 69 73 74 6f | variab|le histo|
|00005e30| 72 79 0d 20 20 20 20 69 | 66 20 21 5b 69 6e 66 6f |ry. i|f ![info|
|00005e40| 20 65 78 69 73 74 73 20 | 68 69 73 74 6f 72 79 5d | exists |history]|
|00005e50| 20 7b 0d 09 61 72 72 61 | 79 20 73 65 74 20 68 69 | {..arra|y set hi|
|00005e60| 73 74 6f 72 79 20 7b 0d | 09 20 20 20 20 6e 65 78 |story {.|. nex|
|00005e70| 74 69 64 09 30 0d 09 20 | 20 20 20 6b 65 65 70 09 |tid.0.. | keep.|
|00005e80| 32 30 0d 09 20 20 20 20 | 6f 6c 64 65 73 74 09 2d |20.. |oldest.-|
|00005e90| 32 30 0d 09 7d 0d 20 20 | 20 20 7d 0d 7d 0d 0d 23 |20..}. | }.}..#|
|00005ea0| 20 68 69 73 74 6f 72 79 | 20 2d 2d 0d 23 0d 23 09 | history| --.#.#.|
|00005eb0| 54 68 69 73 20 69 73 20 | 74 68 65 20 6d 61 69 6e |This is |the main|
|00005ec0| 20 68 69 73 74 6f 72 79 | 20 63 6f 6d 6d 61 6e 64 | history| command|
|00005ed0| 2e 20 20 53 65 65 20 74 | 68 65 20 6d 61 6e 20 70 |. See t|he man p|
|00005ee0| 61 67 65 20 66 6f 72 20 | 69 74 73 20 69 6e 74 65 |age for |its inte|
|00005ef0| 72 66 61 63 65 2e 0d 23 | 09 54 68 69 73 20 64 6f |rface..#|.This do|
|00005f00| 65 73 20 61 72 67 75 6d | 65 6e 74 20 63 68 65 63 |es argum|ent chec|
|00005f10| 6b 69 6e 67 20 61 6e 64 | 20 63 61 6c 6c 73 20 68 |king and| calls h|
|00005f20| 65 6c 70 65 72 20 70 72 | 6f 63 65 64 75 72 65 73 |elper pr|ocedures|
|00005f30| 20 69 6e 20 74 68 65 0d | 23 09 68 69 73 74 6f 72 | in the.|#.histor|
|00005f40| 79 20 6e 61 6d 65 73 70 | 61 63 65 2e 0d 0d 70 72 |y namesp|ace...pr|
|00005f50| 6f 63 20 68 69 73 74 6f | 72 79 20 7b 61 72 67 73 |oc histo|ry {args|
|00005f60| 7d 20 7b 0d 20 20 20 20 | 73 65 74 20 6c 65 6e 20 |} {. |set len |
|00005f70| 5b 6c 6c 65 6e 67 74 68 | 20 24 61 72 67 73 5d 0d |[llength| $args].|
|00005f80| 20 20 20 20 69 66 20 7b | 24 6c 65 6e 20 3d 3d 20 | if {|$len == |
|00005f90| 30 7d 20 7b 0d 09 72 65 | 74 75 72 6e 20 5b 74 63 |0} {..re|turn [tc|
|00005fa0| 6c 3a 3a 48 69 73 74 49 | 6e 66 6f 5d 0d 20 20 20 |l::HistI|nfo]. |
|00005fb0| 20 7d 0d 20 20 20 20 73 | 65 74 20 6b 65 79 20 5b | }. s|et key [|
|00005fc0| 6c 69 6e 64 65 78 20 24 | 61 72 67 73 20 30 5d 0d |lindex $|args 0].|
|00005fd0| 20 20 20 20 73 65 74 20 | 6f 70 74 69 6f 6e 73 20 | set |options |
|00005fe0| 22 61 64 64 2c 20 63 68 | 61 6e 67 65 2c 20 63 6c |"add, ch|ange, cl|
|00005ff0| 65 61 72 2c 20 65 76 65 | 6e 74 2c 20 69 6e 66 6f |ear, eve|nt, info|
|00006000| 2c 20 6b 65 65 70 2c 20 | 6e 65 78 74 69 64 2c 20 |, keep, |nextid, |
|00006010| 6f 72 20 72 65 64 6f 22 | 0d 20 20 20 20 73 77 69 |or redo"|. swi|
|00006020| 74 63 68 20 2d 67 6c 6f | 62 20 2d 2d 20 24 6b 65 |tch -glo|b -- $ke|
|00006030| 79 20 7b 0d 09 61 2a 20 | 7b 20 23 20 68 69 73 74 |y {..a* |{ # hist|
|00006040| 6f 72 79 20 61 64 64 0d | 0d 09 20 20 20 20 69 66 |ory add.|.. if|
|00006050| 20 7b 24 6c 65 6e 20 3e | 20 33 7d 20 7b 0d 09 09 | {$len >| 3} {...|
|00006060| 72 65 74 75 72 6e 20 2d | 63 6f 64 65 20 65 72 72 |return -|code err|
|00006070| 6f 72 20 22 77 72 6f 6e | 67 20 23 20 61 72 67 73 |or "wron|g # args|
|00006080| 3a 20 73 68 6f 75 6c 64 | 20 62 65 20 5c 22 68 69 |: should| be \"hi|
|00006090| 73 74 6f 72 79 20 61 64 | 64 20 65 76 65 6e 74 20 |story ad|d event |
|000060a0| 3f 65 78 65 63 3f 5c 22 | 22 0d 09 20 20 20 20 7d |?exec?\"|".. }|
|000060b0| 0d 09 20 20 20 20 69 66 | 20 7b 21 5b 73 74 72 69 |.. if| {![stri|
|000060c0| 6e 67 20 6d 61 74 63 68 | 20 24 6b 65 79 2a 20 61 |ng match| $key* a|
|000060d0| 64 64 5d 7d 20 7b 0d 09 | 09 72 65 74 75 72 6e 20 |dd]} {..|.return |
|000060e0| 2d 63 6f 64 65 20 65 72 | 72 6f 72 20 22 62 61 64 |-code er|ror "bad|
|000060f0| 20 6f 70 74 69 6f 6e 20 | 5c 22 24 6b 65 79 5c 22 | option |\"$key\"|
|00006100| 3a 20 6d 75 73 74 20 62 | 65 20 24 6f 70 74 69 6f |: must b|e $optio|
|00006110| 6e 73 22 0d 09 20 20 20 | 20 7d 0d 09 20 20 20 20 |ns".. | }.. |
|00006120| 69 66 20 7b 24 6c 65 6e | 20 3d 3d 20 33 7d 20 7b |if {$len| == 3} {|
|00006130| 0d 09 09 73 65 74 20 61 | 72 67 20 5b 6c 69 6e 64 |...set a|rg [lind|
|00006140| 65 78 20 24 61 72 67 73 | 20 32 5d 0d 09 09 69 66 |ex $args| 2]...if|
|00006150| 20 7b 21 20 28 5b 73 74 | 72 69 6e 67 20 6d 61 74 | {! ([st|ring mat|
|00006160| 63 68 20 65 2a 20 24 61 | 72 67 5d 20 26 26 20 5b |ch e* $a|rg] && [|
|00006170| 73 74 72 69 6e 67 20 6d | 61 74 63 68 20 24 61 72 |string m|atch $ar|
|00006180| 67 2a 20 65 78 65 63 5d | 29 7d 20 7b 0d 09 09 20 |g* exec]|)} {... |
|00006190| 20 20 20 72 65 74 75 72 | 6e 20 2d 63 6f 64 65 20 | retur|n -code |
|000061a0| 65 72 72 6f 72 20 22 62 | 61 64 20 61 72 67 75 6d |error "b|ad argum|
|000061b0| 65 6e 74 20 5c 22 24 61 | 72 67 5c 22 3a 20 73 68 |ent \"$a|rg\": sh|
|000061c0| 6f 75 6c 64 20 62 65 20 | 5c 22 65 78 65 63 5c 22 |ould be |\"exec\"|
|000061d0| 22 0d 09 09 7d 0d 09 20 | 20 20 20 7d 0d 09 20 20 |"...}.. | }.. |
|000061e0| 20 20 72 65 74 75 72 6e | 20 5b 74 63 6c 3a 3a 48 | return| [tcl::H|
|000061f0| 69 73 74 41 64 64 20 5b | 6c 69 6e 64 65 78 20 24 |istAdd [|lindex $|
|00006200| 61 72 67 73 20 31 5d 20 | 5b 6c 69 6e 64 65 78 20 |args 1] |[lindex |
|00006210| 24 61 72 67 73 20 32 5d | 5d 0d 09 7d 0d 09 63 68 |$args 2]|]..}..ch|
|00006220| 2a 20 7b 20 23 20 68 69 | 73 74 6f 72 79 20 63 68 |* { # hi|story ch|
|00006230| 61 6e 67 65 0d 0d 09 20 | 20 20 20 69 66 20 7b 28 |ange... | if {(|
|00006240| 24 6c 65 6e 20 3e 20 33 | 29 20 7c 7c 20 28 24 6c |$len > 3|) || ($l|
|00006250| 65 6e 20 3c 20 32 29 7d | 20 7b 0d 09 09 72 65 74 |en < 2)}| {...ret|
|00006260| 75 72 6e 20 2d 63 6f 64 | 65 20 65 72 72 6f 72 20 |urn -cod|e error |
|00006270| 22 77 72 6f 6e 67 20 23 | 20 61 72 67 73 3a 20 73 |"wrong #| args: s|
|00006280| 68 6f 75 6c 64 20 62 65 | 20 5c 22 68 69 73 74 6f |hould be| \"histo|
|00006290| 72 79 20 63 68 61 6e 67 | 65 20 6e 65 77 56 61 6c |ry chang|e newVal|
|000062a0| 75 65 20 3f 65 76 65 6e | 74 3f 5c 22 22 0d 09 20 |ue ?even|t?\"".. |
|000062b0| 20 20 20 7d 0d 09 20 20 | 20 20 69 66 20 7b 21 5b | }.. | if {![|
|000062c0| 73 74 72 69 6e 67 20 6d | 61 74 63 68 20 24 6b 65 |string m|atch $ke|
|000062d0| 79 2a 20 63 68 61 6e 67 | 65 5d 7d 20 7b 0d 09 09 |y* chang|e]} {...|
|000062e0| 72 65 74 75 72 6e 20 2d | 63 6f 64 65 20 65 72 72 |return -|code err|
|000062f0| 6f 72 20 22 62 61 64 20 | 6f 70 74 69 6f 6e 20 5c |or "bad |option \|
|00006300| 22 24 6b 65 79 5c 22 3a | 20 6d 75 73 74 20 62 65 |"$key\":| must be|
|00006310| 20 24 6f 70 74 69 6f 6e | 73 22 0d 09 20 20 20 20 | $option|s".. |
|00006320| 7d 0d 09 20 20 20 20 69 | 66 20 7b 24 6c 65 6e 20 |}.. i|f {$len |
|00006330| 3d 3d 20 32 7d 20 7b 0d | 09 09 73 65 74 20 65 76 |== 2} {.|..set ev|
|00006340| 65 6e 74 20 30 0d 09 20 | 20 20 20 7d 20 65 6c 73 |ent 0.. | } els|
|00006350| 65 20 7b 0d 09 09 73 65 | 74 20 65 76 65 6e 74 20 |e {...se|t event |
|00006360| 5b 6c 69 6e 64 65 78 20 | 24 61 72 67 73 20 32 5d |[lindex |$args 2]|
|00006370| 0d 09 20 20 20 20 7d 0d | 0d 09 20 20 20 20 72 65 |.. }.|.. re|
|00006380| 74 75 72 6e 20 5b 74 63 | 6c 3a 3a 48 69 73 74 43 |turn [tc|l::HistC|
|00006390| 68 61 6e 67 65 20 5b 6c | 69 6e 64 65 78 20 24 61 |hange [l|index $a|
|000063a0| 72 67 73 20 31 5d 20 24 | 65 76 65 6e 74 5d 0d 09 |rgs 1] $|event]..|
|000063b0| 7d 0d 09 63 6c 2a 20 7b | 20 23 20 68 69 73 74 6f |}..cl* {| # histo|
|000063c0| 72 79 20 63 6c 65 61 72 | 0d 0d 09 20 20 20 20 69 |ry clear|... i|
|000063d0| 66 20 7b 28 24 6c 65 6e | 20 3e 20 31 29 7d 20 7b |f {($len| > 1)} {|
|000063e0| 0d 09 09 72 65 74 75 72 | 6e 20 2d 63 6f 64 65 20 |...retur|n -code |
|000063f0| 65 72 72 6f 72 20 22 77 | 72 6f 6e 67 20 23 20 61 |error "w|rong # a|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.